|
楼主 |
发表于 2009-3-4 21:13
|
显示全部楼层
第4部分 Shape(图形)、Chart(图表)对象
技巧58 工作表中自动插入图片
在日常工作中经常需要在工作表中插入大量图片,比如在如图所示的工作表中需要根据A列的名称在C列插入保存在同一目录中的相应的图片,如果使用手工插入不仅非常繁琐且极易出错,而使用VBA代码可以很好的完成操作。
示例代码如下:- #001 Sub insertPic()
- #002 Dim i As Integer
- #003 Dim FilPath As String
- #004 Dim rng As Range
- #005 Dim s As String
- #006 With Sheet1
- #007 For i = 3 To .Range("a65536").End(xlUp).Row
- #008 FilPath = ThisWorkbook.Path & "" & .Cells(i, 1).Text & ".jpg"
- #009 If Dir(FilPath) <> "" Then
- #010 .Pictures.Insert(FilPath).Select
- #011 Set rng = .Cells(i, 3)
- #012 With Selection
- #013 .Top = rng.Top + 1
- #014 .Left = rng.Left + 1
- #015 .Width = rng.Width - 1
- #016 .Height = rng.Height - 1
- #017 End With
- #018 Else
- #019 s = s & Chr(10) & .Cells(i, 1).Text
- #020 End If
- #021 Next
- #022 .Cells(3, 1).Select
- #023 End With
- #024 If s <> "" Then
- #025 MsgBox s & Chr(10) & "没有照片!"
- #026 End If
- #027 End Sub
复制代码 代码解析:
insertPic过程使用Insert方法在工作表中插入图片。
第7行代码开始For...Next循环,循环的终值由工作表中A列单元格的行数所决定。
第8行代码字符串变量FilPath保存A列名称单元格所对应的图片文件的路径和文件名,本例中图片文件的文件名应和A列中的名称一致。
第9行到第11行代码使用Dir函数在同一文件夹中查找与A列单元格中的名称相对应的图片文件,如果对应的图片文件存在则使用Insert方法将图片插入到工作表中,并将C列的单元格赋给变量rng。
Dir函数返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。如果已没有合乎条件的文件,则Dir函数会返回一个零长度字符串 ("")。
第12行到第17行代码,当图片片插入到工作表时其实是插入到活动单元格的,此时需设置图片的Top属性和Left属性将图片移动到C列所对应的单元格中,并设置其Width属性和Height属性使其适应所在单元格的大小。
第18、19行代码如果在同一文件夹中没有与A列单元格对应的图片文件,则使用字符串变量s保存没有图片文件的名称。
第24行到第26行代码如果字符串变量s不等于空白说明文件夹中缺少图片文件,使用消息框提示。
运行insertPic过程工作表如图所示。
如果文件夹中缺少对应的图片文件,则会进行提示,如图所示。
|
评分
-
1
查看全部评分
-
|