ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA来批量更改图片的大小?

如何用VBA来批量更改图片的大小?

作者:绿色风 分类: 时间:2022-08-17 浏览:175
楼主
raulerini
Q:在某个文件夹下有很多大小不等的图片,现在需要将这些大小不等的图片批量更改为同等大小的图片,应该如何操作?
A:可以利用VBA先导入图片,然后对图片的大小进行处理,最后再利用chartobject对象将图片导出。

  1. Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  2. Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nindex As Long) As Long
  3. Private Const LOGPIXELSX = 88   '单位逻辑英寸像素
  4. Private Const LOGPIXELSY = 90
  5. Function PixX2PointX(mypoint)    '借用阿木的磅和像素之间的转化
  6.     PixX2PointX = Application.InchesToPoints(mypoint) / GetDeviceCaps(GetDC(0), LOGPIXELSX)
  7. End Function
  8. Function PIxY2PointY(mypoint)
  9.     PIxY2PointY = Application.InchesToPoints(mypoint) / GetDeviceCaps(GetDC(0), LOGPIXELSY)
  10. End Function
  11. Sub 截取图片()
  12.     mywidth = PixX2PointX(100)
  13.     myheight = PIxY2PointY(100)
  14.     Dim myPic As Shape
  15.     Set myPic = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, mywidth, myheight)
  16.     mypath = ThisWorkbook.Path & "\1\"
  17.     myfilename = Dir(mypath & "*.jpg")
  18.     Do While myfilename <> ""
  19.         With myPic
  20.             .Line.Visible = msoFalse
  21.             .Fill.UserPicture mypath & myfilename
  22.         End With
  23.         With ActiveSheet.ChartObjects.Add(0, 0, myPic.Width, myPic.Height).Chart
  24.             myPic.Copy
  25.             .Paste
  26.             .Export ThisWorkbook.Path & "\" & Replace(myfilename, ".jpg", "_new.jpg"), "JPG"
  27.             .Parent.Delete
  28.         End With
  29.         myfilename = Dir
  30.     Loop
  31.     myPic.Delete
  32.     Set myPic = Nothing
  33.     Set rng = Nothing
  34. End Sub




新建文件夹.rar
2楼
xyf2210
这个收藏
3楼
LOGO
要是想在64位系统上使用此段代码应该如何修改呢?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap