打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用Excel VBA批量添加图片并打印成PDF

利用Excel VBA批量添加图片并打印成PDF

分类: Excel Vba 139人阅读 评论(0) 收藏 举报

折腾了一天,大概总结下

希望实现的效果,添加相应图片,然后打印PDF。添加前删除之前添加过的图片。

 

折腾了一天是因为图片的大小,以及是利用AddPicture方法添加,还是用图像控件添加。

 

Addpicture方法:这个方法相当于Excel里的插入图片,缺点是必须指定插入图片的位置和图片尺寸,这点非常之麻烦。

插入的位置:用range.select选中,然后用selection.height, width来判断插入的坐标,这个就度娘了很久,再次感谢各路大神

插入图片的尺寸:必须输入,还不能默认。(如果谁知道能以默认大小插入图片,还请告知)。不能默认,就首先需要知道图片的大小

这一段代码是用来获取图片的宽,感兴趣的可以研究研究,高就不说了,一样。这段代码的出处我已经找不到了,这是我修改过的,原作者勿怪。

HWString是通过系统找出来的图片的“尺寸”的字符串,然后split找出宽(和高)

Function getPicWidth(picPath) As Single
    Set objShell = CreateObject("Shell.Application")
    rPath = Replace(picPath, Dir(picPath, vbDirectory), "")
    Set oFolder = objShell.Namespace(rPath)
    'Dim arr(40) As String
    Dim HWstring As String
    For i = 0 To 35
        If oFolder.getdetailsof(oFolder.Items, i) = "尺寸" Then
            Set ofile = oFolder.Items.Item(Dir(picPath))
            HWstring = oFolder.getdetailsof(ofile, i)
            Exit For
        End If
    Next i
   
    'MsgBox (HWstring)
    ar = Split(HWstring, "x")
    zuo = CSng(Mid(ar(0), 2, Len(ar(0))))
    'MsgBox (zuo)
    getPicWidth = zuo
   
End Function

 

网上有朋友说直接用AddPicture方法加入图片然后用range.select查看,我想说真的不行,不知道EXCEL怎么回事,有时候小图片加入后不是图片原来的大小,而大一点的图片却是,这点非常不理解。大家可以试一试。

 

以上是成功用AddPicture加入图片并准确控制加入位置和大小的方法。需要注意的是上面代码获取的图片大小是像素,需要换成磅

磅和像素的换算:(摘自网络)

磅:pt
像素:px

px=pt*96/72;

pt=px*72/96;
其中96为磅的英寸值(每英寸几个点的数量),一般叫:dbi

======================================

好了,以上是研究成果,现在来看烦了我一下午的图像控件!!!!

图像控件,ActiveX image control,用起来确实不错。对了,忘了说了,用AddPicture方法无法实现自动剪裁,比如图片超过指定大小,就只显示左上角指定大小的一部分。我没发现AddPicture能做到这点。但image控件却可以。我曾以为image控件灰常强大,但我错了。

 

在用for循环中,image控件只能被正确Load一次,看以下代码

For i = 1 to 3

    If i=1 then

          Sheet1.Image1.Picture=LoadPicture("C:\1.jpg")

   Elseif i=2 then

          Sheet1.Image1.Picture=LoadPicture("C:\2.jpg")   

    Elseif i=3 then

            Sheet1.Image1.Picture=LoadPicture("C:\3.jpg")

    End if

    '打印的代码

Next i

 

 

OK以上代码很简单,1到3,每次打印不同的图片,而且可以很方便的控制大小,位置等等,但最后发现打印出来的全是第一张图片,最后打印完后,显示的是第三张图片。我折腾了一下午硬是没弄清楚。最后发现图像控件在一个sub里只能被load一次,不管你设置多少次Picture的值,其显示的只是第一个。而且也无法判断是否正确加载。我要疯了。早知道还是用AddPicture了!!!

 

各位看官可以试一试,我也在ExcelHome发了贴

http://club.excelhome.net/thread-970087-1-1.html

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Select Case语句
如何把网页上的图片导入VB图片框中并显示出来
图片框控件的使用
Excel批量插入图片,并设置图片超链接
java POI实现向Excel中插入图片
【VBA】如何制作图片产品目录
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服