【发布时间】:2020-07-07 21:09:57
【问题描述】:
我在工作中遇到一种情况,人们必须在某个 Excel 页面中手动引入图片并手动调整其大小。作为一个完整的初学者,我设法找到一些 VBA 代码来帮助介绍图片,方法是单击一个按钮并将其插入特定范围的单元格中。我遇到的问题是我无法弄清楚(在搜索了很多帖子之后)如何正确引入保存图像的功能而不创建链接,以便其他人可以看到报告而不会出现图片不存在的错误.
你能帮我完成应该在哪里引入功能吗?
Private Sub CommandButton3_Click()
Dim strFileName As String
Dim objPic As Picture
Dim rngDest As Range
strFileName = Application.GetOpenFilename( _
FileFilter:="Images (*.jpg;*.gif;*.png),*.jpg;*.gif;*.png", _
Title:="Please select an image...")
If strFileName = "False" Then Exit Sub
Set rngDest = Me.Range("B24:C26")
Set objPic = Me.Pictures.Insert(strFileName)
With objPic
.ShapeRange.LockAspectRatio = msoFalse
.Left = rngDest.Left
.Top = rngDest.Top
.Width = rngDest.Width
.Height = rngDest.Height
End With
End Sub
提前致谢!
【问题讨论】:
-
对不起,我试过了,它给了我一个错误提示“运行时错误'448',找不到命名参数。
-
Set objPic = Me.Pictures.Insert(strFileName)是正确的。它应该插入图像而不使其成为链接。您也可以使用Shapes.AddPicture method (Excel)。类似Dim objPic As Object然后在下一行Set objPic = ActiveSheet.Shapes.AddPicture(strFileName, False, True, 10, 10, -1, -1) -
@SiddharthRout 非常感谢。我已经根据您的建议在两台计算机上进行了测试,并且可以正常工作!我祝你有一个美好的一天:) 为了让其他人知道,我已经删除了这一行,因为它给出了一个错误,并按照 Siddharth 的说法添加了活动表。
codeShapeRange.LockAspectRatio = msoFalse -
如果您从工作表模块运行代码,那么您可以继续使用
Me,但如果您从用户窗体运行此代码,那么您应该声明您的工作表对象并使用它。例如Dim ws as Worksheet,然后是Set ws = Sheet1,最后是Set objPic = ws.Shapes.AddPicture....