使用VBA获取图片信息

2025-11-27 10:21:55

1、打开Excel表格之后,按下【Alt+F11】组合键打开VBA编辑器。

使用VBA获取图片信息

2、在VBA编辑器的菜单栏上面点击【插入】、【模块】。

使用VBA获取图片信息

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

使用VBA获取图片信息

4、程序的运行结果如下图所示。

使用VBA获取图片信息

5、程序函数、思路解读:

(1)使用VBA访问计算机文件系统信息,需要用到“CreateObject("Scripting.FileSystemObject")”,然后逐层去查找、访问。

(2)“For Each picture In fi”是对文件夹里边的每一个文件逐一扫描,然后再获取相关的信息。(picture代表fi文件集里边的其中一员)

(3)Size获取的图片大小是字节(Byte),此时需要把它除以1024转换成KB,再使用“ROUNDUP”向上取整才能接近于电脑上面显示的图像大小。

(4)由于没法直接从电脑上面获取图片的像素信息,只能把它插入Excel表格,按原图100%放大之后获取它的像素信息。(Sheet2是临时使用的表格,里边不要放有图片文件,以免全部被删除)

(5)获取的像素信息可能不是整数,所以就通过“Int”取整函数进行取整。

使用VBA获取图片信息

6、程序运行调试:

程序调试是写程序时不可或缺的一步,对程序代码不熟悉,可以边写边调试,发现错误的同时也能够加深印象。

(1)调试程序时,先把“Application.ScreenUpdating = False”、“On Error Resume Next”等可能影响程序调试的屏蔽掉;

(2)点击VBA编辑器菜单栏上面的【视图】,【本地窗口】,然后按下【F8】键逐一运行程序,在“本地窗口”及工作表上面查看执行的结果,更正程序中存在的不足。

使用VBA获取图片信息

使用VBA获取图片信息

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢