永发信息网

请大神帮忙修改下代码

答案:1  悬赏:10  手机版
解决时间 2021-12-26 06:57
改成图片自动居中的,谢谢!

Sub Autoaddpic()
For Each Shp In ActiveSheet.Shapes
If Shp.Type = msoPicture Then Shp.Delete
Next
Dim MyPcName As String
For i = 1 To ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
If (ActiveSheet.Cells(i, 4).Value = "图片") Then
MyPcName = ActiveSheet.Cells(i, 3).Value & ".jpg"
ActiveSheet.Cells(i, 4).Select
Dim MyFile As Object
Set MyFile = CreateObject("Scripting.FileSystemObject")
If MyFile.FileExists(ThisWorkbook.Path & "\" & "pic" & "\" & MyPcName) = False Then
MsgBox ThisWorkbook.Path & "\" & "pic" & "\" & MyPcName & "暂无图片"
Else
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & "pic" & "\" & MyPcName).Select
End If
End If
Next i

End Sub
最佳答案
呵呵,我不是什么大神。
要居中,主要是加了对图片操作的代码,也就是下面的with语句,修改后的代码如下:

Sub Autoaddpic()
On Error Resume Next '这句好像意义不大
Application.ScreenUpdating = False
Dim MyPcName$, MyMsg$, MyPic$ '加多一个Mypic变量,直观一点;加了Mymsg变量,变成一次过汇总输出缺少的图片提示
Dim MyFile As Object
Set MyFile = CreateObject("Scripting.FileSystemObject")
For Each Shp In ActiveSheet.Shapes
If Shp.Type = msoPicture Then Shp.Delete
Next
For i = 1 To ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
If ActiveSheet.Cells(i, 4).Value = "图片" Then
MyPcName = ActiveSheet.Cells(i, 3).Value & ".jpg"
MyPic = ThisWorkbook.Path & "\" & "pic" & "\" & MyPcName
If MyFile.FileExists(MyPic) = False Then
MyMsg = MyMsg & vbCrLf & MyPic & " 暂无图片"
Else
ActiveSheet.Pictures.Insert(MyPic).Select '当前文件所在目录下以单元内容为名称的.jpg图片
With Selection
ta = Range(Cells(i, 4).MergeArea.Address).Height '(合并)单元高度
tb = Range(Cells(i, 4).MergeArea.Address).Width '(合并)单元宽度
tc = .Height*.99 '图片高度
td = .Width '图片宽度
tm = Application.WorksheetFunction.Min(ta / tc, tb / td) '单元与图片之间长宽差异比例的最小值
.Height = .Height * tm * 0.95 '按比例调整图片宽度,*.95为缩小一点
.Width = .Width * tm * 0.95 '按比例调整图片高度,*.95为缩小一点
.Top = Cells(i, 4).Top + (Cells(i, 4).MergeArea.Height - .Height) / 2 '垂直居中:
.Left = Cells(i, 4).MergeArea.Left + (Cells(i, 4).MergeArea.Width - .Width) / 2 '水平居中:
End With
ActiveCell.Select '获得焦点
End If
End If
Next
If Len(MyMsg) <> 0 Then
MsgBox MyMsg
End If
Set MyFile = Nothing
Application.ScreenUpdating = True
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
乃的五笔怎么打
交寄邮件时为什么要填写邮政编码?一封信从寄
单选题2000年新棉上市以来,有些收购企业和个
掘金集团有微信公众号吗?
“神舟七号”载人航天飞船的成功飞行,是中华
春日后两句的诗句意思
If you want to have a visit to my hometown
从北海坐高铁到长沙要经过哪几个站
货币是否有价值
口袋妖怪复刻慎重吉利蛋
暮色茫茫是什么时候
怎么把在线视频录下来
对方不是微信好友我在群里把他加入黑名单这样
单选题“美国的政策必须是支持自由国家人民抵
请问,3250的短信铃声设置在哪?,3250的铃声设
推荐资讯
飞奔的马是什么跑车
|°The,end这个是我男朋友的网名,跪求油菜的
平安保险代理人干嘛的?
晚上好怎么说
单选题sinα≠sinβ是α≠β的A.充分不必要条
“姜子牙”闽南话怎么讲。。。急。急。急在线
财汇 万德 聚源 这些都是什么啊
小米2s图库里的照片隐藏了,怎样才能恢复到图
上海站(上海火车站)附近有没有青年旅社?
安德森法布雷症是什么
10块钱能买5瓶啤酒,2个瓶子换一瓶啤酒,4个
转世投胎后灵魂消失,祭祖和扫墓有何意义?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?