3
在“模块”的代码窗口里边输入以下VBA程序,然后按下【F5】键运行程序。
Sub GetPicturesInfo()
Dim fs, fo, fi, str, i, picture
Application.ScreenUpdating = False '关闭屏幕更新以提高宏的运行速度
On Error Resume Next '忽略运行过程中可能出现的错误
i = 1 'i初始化,从第二行开始
Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义Sheet1工作表
Set mysheet2 = ThisWorkbook.Worksheets("Sheet2") '定义Sheet1工作表
Set fs = CreateObject("Scripting.FileSystemObject") '创建并返回对计算机系统文件的访问
Set fo = fs.Getfolder("D:\ABC\") '定义文件夹,“ABC”为D盘下边的文件夹
Set fi = fo.Files '定义文件夹下边所有文件集
For Each picture In fi '获取文件夹里面所有的文件
i = i + 1 '每执行一次循环递增1行
mysheet1.Cells(i, 1) = picture.Name '图片名称
mysheet1.Cells(i, 2) = picture.Type '图片类型
mysheet1.Cells(i, 3) = Application.WorksheetFunction.RoundUp((picture.Size) / 1024, 0) & " KB"
'图片大小,把字节转换成k并向上舍入并保留整数
mysheet1.Cells(i, 5) = picture.DateLastModified '最后的图片更改日期
mysheet1.Cells(i, 6) = picture.DateCreated '图片的创建时间
mysheet2.Pictures.Delete '删除Sheet2上面所有的图片
str = "D:\ABC\" & picture.Name '图片文件路径
mysheet2.Pictures.Insert (str) '插入图片
mysheet2.Pictures.ShapeRange.ScaleHeight 1, msoTrue, msoScaleFromTopLeft
'对插入的图片100%按照原图放大
If picture.Type = "PNG 文件" Or picture.Type = "GIF 图像" Then
'如果是"PNG 文件"或 "GIF 图像"文件,则需要除以0.75,以免像素对不上
mysheet1.Cells(i, 4) = Round(mysheet2.Pictures.Width / 0.75) & _
" x " & Round(mysheet2.Pictures.Height / 0.75)
Else
mysheet1.Cells(i, 4) = Round(mysheet2.Pictures.Width) & _
" x " & Round(mysheet2.Pictures.Height)
End If
mysheet2.Pictures.Delete
Next
Application.ScreenUpdating = True '恢复屏幕更新
End Sub