6.6 FSO对象
前两节我们把一组图片按图片的名字批量插入到单元格右边的表格里。今天我们准备把这组图片按照图片的名字给对应的单元格加上批注。我们存储的图片有时候是“jpg”格式的,有时候是“png”格式的。今天要实现的功能是不论图片是哪种格式,系统都能自动变换,从而保证程序的正常执行。要实现这种功能,就要用到FSO对象。
FSO对象全称FileSystemObject,意思是文件系统对象。它能提供对计算机文件系统的访问权限,可以实现文件(文件夹)的创建、改变、移动和删除等操作,也可以获取文件(文件夹)的名称、大小、属性、创建日期或最近修改日期等信息,还可以检测是否存在指定的文件(文件夹)。
FSO对象的诸多功能以后章节会详细介绍,今天我们主要是用它的一个FileExists方法,该方法能检查指定的文件是否存在。如果指定文件存在,则返回True;如果不存在,则返回False。
FSO对象不是Excel的自带功能,需要引用后才可以使用。引用分为前期绑定和后期绑定,今天我们直接用后期绑定。
Set fso = CreateObject('scripting.filesystemobject')
fso.FileExists(带全路径的文件名),如:
fso.FileExists(“F:\VBA学习\VBA学习.xls”)
小程序:
这组图片里既有jpg格式,又有png格式。
Sub 插入批注图片()
Set fso = CreateObject('scripting.filesystemobject')
Dim ss As Range, pz As Comment
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
t = fd.Show
If t = -1 Then
lj = fd.SelectedItems(1)
Else
MsgBox '未选择图片路径,程序结束'
Exit Sub
End If
w = InputBox('请输入批注的宽度')
h = InputBox('请输入批注的高度')
For Each ss In Range('a1', Cells(Rows.Count, 1).End(xlUp))
ss.ClearComments
路径 = lj & '\' & ss.Value & '.png'
If Not fso.FileExists(路径) Then 路径 = lj & '\' & ss.Value & '.jpg'
If fso.FileExists(路径) Then
Set pz = ss.AddComment
pz.Shape.Fill.UserPicture 路径
pz.Shape.Width = w
pz.Shape.Height = h
End If
Next
End Sub
首先对FSO对象进行后期绑定,然后选择图片存放的文件夹,输入批注的宽度和高度,我们这里各输入100。先对图片赋予“png”的后缀名,如果该文件不存在,则把后缀名改为“jpg”。最后用图片填充单元格的批注,再设置批注的宽和高。运行结果如下:
联系客服