当前位置:首页 » 新媒体运营 » 正文

朋友圈心形配图,坑你没商量,EXCEL插入图片也带“坑”

9724 人参与  2023年02月09日 13:24  分类 : 新媒体运营  评论

在EXCEL中插入图片是常规的不能再常规的动作,一般的人无非就是选择“插入”--“图片”,就把图片插入到工作表中去了。

没错!但是你想过没有,要成千上万张地插入图片,并按一定的顺序排列时,如下图所示的样子,难道你还是用手工插入吗?肯定不是!神奇加万能的VBA呀!

朋友圈心形配图,坑你没商量,EXCEL插入图片也带“坑”-百度竞价优化_微商推广_今日头条自媒体_新媒体运营_剑谦网络

不是一张,是上千张!排到何时?

很不幸,最近做的一个项目就是用VBA实现批量插图的案子,但接连踩坑,为了提醒自己和别人,我把我处理的全过程记录下来,如果你有缘看到了,不想点个赞再走,谢谢!

第一坑:使用平台内置接口

考虑到客户不是一个人使用,需要多个人同时协作生成批量的“图文档”,马上想到的是使用平台代码来实现,于是第一版就写了如下代码:

作用:实现插入图片

参数:带完整路径的图片文件名字

返回值:没有

示例:

Sub CommandButton_Click()

‘定义接口变量

Dim sErr As String

Dim sResult As String

Dim obj As Object

‘获取高士达云平台的编程接口

Set obj = Application.COMAddIns.Item("prjAddin.Office_Addin").Object

‘通过接口调用InsertRowCol

obj.InsertPic “ D:Imguser.jpg”

‘释放编程接口

Set obj = Nothing

End Sub

解说:在当前图片项目的单元格中插入来自“ D:Imguser.jpg”的图片

终于成功了,可是图片不能紧贴着单元格,且长宽比不能调整。好吧,算我输。

第二坑:录制宏获得插入图片代码

一计不成,立马心生另一计。通过录制宏的办法,获得插入图片的代码。考虑到表格和图片排版的位置还不一样,把表格搞成了链接图片的样子。大力出奇迹,写出了如下代码:

Sheet.Cells(图, c).Select

当前树木 = Range("第一行") &#;用于获取出错时树木编号

mypic = choosefolder & "" & Range("第一行") & i & ".jpg" &#;路径+项目编号+顺序号


ActiveSheet.Pictures.Insert(mypic).Select &#;插图


Selection.ShapeRange.LockAspectRatio = msoFalse &#;取消行列限制


Selection.ShapeRange.Height = . &#;高CM


Selection.ShapeRange.Width = . &#;宽CM

终于成功了,挺有自豪感的。

可是高兴得太早了,客户一使用反馈了两个问题:一是数量太大时,速度很慢;二是生成好的结果复制到另一台电脑时图片全丢失了。

晕,怎么会这样?

第三坑:上网找来神代码

为什么慢,原来是链接表格图片的问题。为什么丢图,原来是这种代码插入的图片相当于插入图片时默认选择了“链接图片”形式,也就是说图片没插入到工作簿中。

几番搜索,找来一段别的高手代码,修改使用。

For i = To Cells(Rows.Count, cellcolumn).End(xlUp).Row &#;数字是设置开始填充图片的行号是第行

For j = To UBound(pictype)

If Dir(picads & Cells(i, cellcolumn) & pictype(j)) <> "" Then

Cells(i, piccolumn) = "MMT" &#;表格填图

ActiveSheet.Shapes.AddShape(msoShapeRectangle, (Cells(i, piccolumn).Left + .), (Cells(i, piccolumn).Top + .), (Cells(i, piccolumn).Width - ), (Cells(i, piccolumn).Height - )).Fill.UserPicture picads & Cells(i, cellcolumn) & pictype(j)

Exit For &#;插入图片,退出循环

End If

Next j

Next i

天!够复杂的。原理无非是先插入一个矩形框,再往框中填充图片。感觉仍不是理想。

终极解决方案:直接插入图片

几番摸索,终于找到一个神语句,解决了我的大问题。

Shapes.AddPicture 方法 :从现有文件创建图片。 返回一个 Shape 对象,该对象表示新的图片。

语法:AddPicture (FileName、LinkToFile、SaveWithDocument、Left、Top、Width、Height )

这个语句不仅插入图片,而且还可调整图片大小,有参数控制是不是链接。真是踏破铁鞋无觅处!

现在剩下的问题就是计算每张图片的位置问题了。好办!

当前树木 = Range("第一行") &#;用于获取出错时树木编号

mypic = choosefolder & "" & Range("第一行") & i & ".jpg" &#;路径+项目编号+顺序号


ActiveSheet.Shapes.AddPicture mypic, True, True, ly, Lx, ., . &#;宽CM,高CM

几乎一句话就搞定了。

总结:

不尝试难修得正果,不积累难成为高手。愿你看完此文少走弯路。

顺利放几张成品图供参考。

这是主操作界面。

朋友圈心形配图,坑你没商量,EXCEL插入图片也带“坑”-百度竞价优化_微商推广_今日头条自媒体_新媒体运营_剑谦网络


需要打印几千张这样的结果图片。

本文链接:http://www.woshiqian.com/post/192042.html

百度分享获取地址:https://share.baidu.com/code
创意批量配图  

我是钱微信/QQ:5087088

广告位、广告合作QQ:5087088

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

       

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。