VBA(5)表格内常见导入图片方式

这篇具有很好参考价值的文章主要介绍了VBA(5)表格内常见导入图片方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一下VBA内对图片的常见处理,假投表格内有一个图片对象。我们先用一段代码测出图片的常用属性

Sub t2()
    Dim k# 			'单义一个双精度变量
    On Error Resume Next		'如遇报错(未添加对象图片的表格)继续运行
    Dim ms As Shape			'ms变量为shape图形对象,是sheets和chart的子对象	
    k = 1
    For Each ms In Sheets(1).Shapes	'本表格1里面寻找图形
        k = k + 1			'行数
        Cells(k, 1) = ms.Name       '对象图片名子
        Cells(k, 2) = ms.Type       '类型
        '图片1
        Cells(k, 3) = ms.BottomRightCell    '图片右上单元格位置(图片如果没固定位置则空白
        Cells(k, 4) = ms.toleftcell     '图片左下单元格位置(图片如果没固定位置则空白
        Cells(k, 5) = ms.Hyperlink      '图片超链接(见12.13
        Cells(k, 6) = ms.Visible        '-1可见/0不可见
        Cells(k, 7) = ms.OnAction       '图形运行的宏
        Cells(k, 8) = ms.Top        '顶距
        Cells(k, 9) = ms.Width      '宽度
        Cells(k, 10) = ms.Height        '高度
        Cells(k, 11) = ms.Left      '左边距
        Cells(k, 12) = ms.Hyperlink.Address     '图片超链接地址:网址或文档
        Cells(k, 13) = ms.Hyperlink.SubAddress      '文档引用的位置(第几页或者区域)
	'例子将超链接设置桌面文档12345表格。返回A1:B10选中
        ms.Hyperlink.Address = "C:\Users\Administrator\Desktop\12345.xlsx"
        ms.Hyperlink.SubAddress = "A1:B10"
 	'在EXCEL选项卡显示为C:\Users\Administrator\Desktop\12345.xlsx#A1:B10
        Next
End Sub

表格内图片对象格式'对象.type        可查看返回格式

Type名称

说明

mso3DModel

30

3D 模型

msoAutoShape

1

自Shape

msoCallout

2

标注

msoCanvas

20

Canvas

msoChart

3

图表

msoComment

4

批注

msoContentApp

27

外接程序Office内容

msoDiagram

21

图表

msoEmbeddedOLEObject

7

嵌入式 OLE 对象

msoFormControl

8

表单控件

msoFreeform

5

任意多边形

msoGraphic

28

图形

msoGroup

6

Group

msoIgxGraphic

24

SmartArt 图形

msoInk

22

墨迹

msoInkComment

23

墨迹批注。

msoLine

9

线条。

msoLinked3DModel

31

链接的 3D 模型

msoLinkedGraphic

29

链接图形

msoLinkedOLEObject

10

链接 OLE 对象。

msoLinkedPicture

11

链接图片。

msoMedia

16

媒体

msoOLEControlObject

12

OLE 控件对象。

msoPicture

13

图片

msoPlaceholder

14

占位符

msoScriptAnchor

18

脚本定位标记。

msoShapeTypeMixed

-2

混和形状类型。

msoSlicer

25

切片器

msoTable

19

表格

msoTextBox

17

文本框。

msoTextEffect

15

文本效果。

msoWebVideo

26

Web 视频

往表格内添加图片
    1.引用方式:
    当图片位置被删除、移动时,excel文件中的图片找不到位置会显示错误。
    'ActiveSheet.Pictures.Insert ("图片所在路径带文件名扩展名")
    2.创建方式:
    'Worksheets(1).Shapes.AddPicture "C:\Users\Administrator\Desktop\12345.png", False, True, 1, 1, 600, 600
    Shapes.AddPicture 方法 (Excel)
    从现有文件创建图片。 返回一个 Shape 对象,该对象表示新的图片。
    语法:表达式。AddPicture (FileName、 LinkToFile、 SaveWithDocument、 Left、 Top、 Width、 Height)
    expression:一个表示 Shapes 对象的变量。

名称

必需/可选

数据类型

说明

FileName

必需

String

要创建图片的文件。

LinkToFile

必需

MsotriState

要链接至的文件。 使用 msoFalse 使图片成为文件的独立副本。 使用 msoTrue 将图片链接到创建图片的文件。

SaveWithDocument

必需

MsoTriState

将图片与文档一起保存。 使用 msoFalse 仅存储文档中的链接信息。 使用 msoTrue 将链接的图片与插入它的文档一起保存。 如果 LinkToFile 为 msoFalse,则此参数必须为 msoTrue。

Left

必需

Single

图片 (左上角) 相对于文档左上角的位置,以点表示。

Top

必需

Single

图片左上角相对于文档顶部的位置(以磅为单位)。

Width

必需

Single

图片的宽度,以 (-1 以保留现有文件的宽度,以) 。

Height

必需

Single

图片的高度(以 (-1 表示,以保留现有文件的高度) 。

官方原文说明 <Shapes.AddPicture 方法 (Excel) | Microsoft Docs>

Sub 图片导入方式1()
    Dim s As Shape      '定义一个图象变量
    Dim rg As Range     '定义一个单元格变量
    For Each s In ActiveSheet.Shapes
        If s.Type <> 8 Then	'msoShapeRectangle 类型为8
        s.Delete        '循环活动工作表的图表对象类型不为8的删除
        End If
    Next
    For Each rg In Range("b2:b5")       '循环B2:B5单元格
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, rg.Left, rg.Top, rg.Width, rg.Height).Select
    '创建一个空白形状对象并选中
    Selection.ShapeRange.Fill.UserPicture "C:\Users\Administrator\Desktop\新建文件夹\" & rg.Offset(0, -1) & ".jpg"
    '选中的对象背景填充图片路径,文件名为RG偏移0行.-1列.文件类型JPG
    Next
End Sub

sub 图片导入方式2()
	dim str1 as string	'定义一个文本做为路径带文件名
	dim s as string		'定义一个做为找不到图片时显示的文本
	dim x as integer	'循环数字
	dim rng as range	'图片要显示的单元格
	with sheet1
		for x = 2 to .range("a65536").end(xlup).row				
			str1 = "C:\Users\Administrator\Desktop" & "\" & .cells(x,1).text & ".jpg"	'循环需要添加的图片名称带路径文件名格式
			if dir(str1) <> "" then		'使用dir函数返回文件名,如不使用循环当没有此图if会出错
				.pictures.insert(str1).select				'使用pictures.insert方法插入图片
				set rng = .cells(x,3)					'设置要放图片的单元格
				with selection						'选中单元格与刚放置的图片
					.top = rng.top +1 				'顶边距
					.left = rng.left +1				'左边距
					.width = rng.width -1				'宽度
					.height = rng.height -1				'高度
				end with						'设置图片与单元格的尺才一致
			else
				s = s & chr(10) & .cells(x,1).text			'如果没有图片则把没有名字的文本加到变理S里面,后面用MSGBOX显示
			end if 
		next
		.cells(3,1).select							'选中
	end with
	if s <> "" then
		msgbox s & chr(10) & "没有图片"				'显示没有图片的名子
	end if
end sub

Sub 批注的形式图片3()
    Dim filePath As Object,fz As Object,dz$
    Dim ss As Range, ss1 As Comment, h As Byte, w As Byte, dzzname As String
    Selection.ClearComments             '所选区域批注清除
    Set filePath = CreateObject("scripting.filesystemobject")        
    '引用于操作磁盘、文件夹或文本文件FSO的对象
    If Selection(1) = "" Then
        MsgBox "未选择": Exit Sub
    End If
        Set fz = Application.FileDialog(msoFileDialogFolderPicker)      '选择一个文件夹
                    'msoFileDialogFilePicker 可选文件夹
                    'msofiledialogopen  打开文件
                    'msofiledialogsaveas    '保存一个文件
            If fz.Show = -1 Then
                dz = fz.SelectedItems(1)    '图片文件夹路径记录
            Else
                Exit Sub
            End If
        For Each ss In Selection
            dzzname = dz & "\" & ss.Value & ".jpg"
            If filePath.fileexists(dzzname) Then        'FILEEXISTS查看目录是否存在
            Set ss1 = ss.AddComment                         '创建批注
                With ss1.Shape                              '设置新建的批注格式
                    .Fill.UserPicture dzzname                   '设置批注图片填充
                    .Width = ss.Width - 1
                    .Height = ss.Height - 1
                End With
            End If
        Next
        MsgBox "完成"
End Sub

相反如果要导出表格内图片。则先For Each shp In 表格.Shapes方式循环导出;文章来源地址https://www.toymoban.com/news/detail-453275.html

Sub 图片导出()
    Dim shp As Shape, picname$, n%     '定义shp为图像对象,picname为文本,n,icount为数值
    Application.ScreenUpdating = False     '关闭宏进行中刷新,提高速度
        For Each shp In Sheet2.Shapes      '对表2中的图像对象循环
            n = n + 1
        'Debug.Print shp.Type       '查看下图片类型,调试使用
        'DoEvents            ' 转让控制权,如果有加进度条窗体等可以使用
        If shp.Type = 11 Then
            picname = shp.BottomRightCell.Offset(-1, -1).Value & ".jpg"                                 
                       'bottomrightcell图片所在位置右下单元格,OFFSET偏移到对应的名子赋值
            shp.Copy
            With Sheet2.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart         
                      '.ChartObjects.Add创建新的嵌入式图表(左距、顶距、宽度、高度)
                .ChartArea.Select        '.ChartArea返回该图像对象
                .Paste                   'Chart.Paste方法将剪贴板中的图表数据粘贴到指定的图表中
                .Export ThisWorkbook.Path & "\" & picname  'Chaet.Export 以图形格式导出图表。
                .Parent.Delete         '获取Chart控件的父对象,即chart.delete
            End With
        End If
    Next
    Application.ScreenUpdating = True         '恢复刷新
    MsgBox "完成"
End Sub

到了这里,关于VBA(5)表格内常见导入图片方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【工具插件类教学】NPOI插件使用Excel表格的导入和导出(包含图片)

    目录 一.导入Excel 解析读取 1.选择导入的目标文件 2.解析读取导入的文件

    2024年01月16日
    浏览(51)
  • 记录--你真的能区分JavaScript的各种导入导出方式吗?

    我们在无论是在查阅别人的代码,还是在实际项目开发的过程中,肯定都会使用导入导出的功能,有时候我们会搞混这几种方式到底有什么区别,今天我们就来细致的区分一下: 我们都知道最常见的几种导出方式无非是 export , exports , export default , module.exports 这几种,常

    2024年02月08日
    浏览(34)
  • Excel·VBA表格横向、纵向相互转换

    如图:对图中区域 A1:M6 横向表格,转换成区域 A1:C20 纵向表格,即 B:M 列转换成每2列一组按行写入,并删除空行。同理,反向操作就是纵向表格转换成横向表格 实现方法1 对 本文图1 中,按“交期和交货数量”每5行2列为一组,依次按行写入,即按“交期”顺序排列 转换结果

    2024年02月14日
    浏览(46)
  • Python和VBA批量提取Word中的表格

    表格在word文档中常见的文档元素之一。操作word文件时有时需要提取文件中多个表格的内容到一个新的文件,甚至有时还会要提取题注信息。 今天,给大家分享两种批量提取文档中表格的两种方法,分别是VBA法和Python法两种。 1. 代码实现 VBA(Visual Basic for Applications)操作Wo

    2024年02月19日
    浏览(59)
  • 使用Vscode 编辑器 导出、导入和运行Excel中的VBA代码

    前言 Excel自带的 Microsoft Visual Basic for Applications 编辑器常被人称为上古编辑器,的确不适合代码编辑,这是其一,其二是当系统语言与Excel的安装语言不一致时,往往出现乱码,看起来极不舒服,这时又需要更改系统语言,所以往往需要探索其他的VBA开发编辑器,经过一番探索

    2024年02月04日
    浏览(128)
  • 【记录】Excel 2021|(三)VBA使用Selenium自动登录网页

    首先需要安装 Selenium Basic ,才能在工具栏中找到 Selenium Type Library 。 在安装Selenium Basic之前,请确保您的计算机上已安装Visual Basic for Applications(VBA)。VBA是Microsoft Office应用程序(如Excel、Word等)中使用的宏语言。 安装Selenium Basic方法如下: 首先,下载Selenium Basic安装程序。

    2024年02月11日
    浏览(41)
  • 【了解一下常见的设计模式】

    **设计模式(Design Pattern)**是软件开发过程中一般问题的解决方案,是无数面向对象软件开发人员的经验总结,对于软件设计开发十分重要。然而由于设计模式种类繁多,内容偏理论,缺乏开发经验对于相关概念的理解也比较困难,同时其中不乏很多类型相似的设计模式,更

    2024年02月12日
    浏览(34)
  • EasyPoi表格导入添加校验

    页面生成到处错误文件的 excel 表格内容如下

    2024年04月13日
    浏览(38)
  • matlab导入表格警告

     警告: 在为表创建变量名称之前,对文件中的列标题进行了修改,以使其成为有效的 MATLAB 标识符。原始列标题保存在 VariableDescriptions 属性中。 将 \\\'VariableNamingRule\\\' 设置为 \\\'preserve\\\' 以使用原始列标题作为表变量名称。  改正 :添加 \\\'VariableNamingRule\\\' 命令  参考

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包