Excel 2016 VBA从工作表复制图片,并在另一工作表的文本框中自动调整
我有一个图片“图片1”在左上角的表“标志”。 这是通过另一个宏实现的。 现在我想要一个宏来复制“图片1”并粘贴在“Voorblad”页上的文本框“TextboxLogo”中。 图片应该自动调整到文本框高度的90%,以垂直和水平居中为中心。 这是我目前掌握的代码:Excel 2016 VBA从工作表复制图片,并在另一工作表的文本框中自动调整,excel,vba,image,textbox,autosize,Excel,Vba,Image,Textbox,Autosize,我有一个图片“图片1”在左上角的表“标志”。 这是通过另一个宏实现的。 现在我想要一个宏来复制“图片1”并粘贴在“Voorblad”页上的文本框“TextboxLogo”中。 图片应该自动调整到文本框高度的90%,以垂直和水平居中为中心。 这是我目前掌握的代码: Sub Macro1() Dim picture As Shape Sheets("Logo").Activate picture = ActiveSheet.Shapes.Range(Array("Picture 1")) Shee
Sub Macro1()
Dim picture As Shape
Sheets("Logo").Activate
picture = ActiveSheet.Shapes.Range(Array("Picture 1"))
Sheets("Voorblad").Visible = True
With Sheets("Voorblad").Shapes("TextBoxLogo").Fill
.Visible = True
.UserPicture picture
.TextureTile = True
.RotateWithObject = True
End With
End Sub
我必须使用一个文本框,因为图片重叠了所有单元格
当我运行这个程序时,我得到运行时错误91,对象变量或with block变量未设置。
我搜索过这个论坛和谷歌,但没有成功
我希望我能这样走运
Shape
是对象类型,picture
是对象变量
不能像这样指定对象引用。运行时错误告诉您的是,Set
关键字丢失
Set picture = ActiveSheet.Shapes.Range(Array("Picture 1"))
也就是说你不需要做
表单(“Logo”)。激活
Set picture = ActiveWorkbook.Worksheets("Logo").Shapes.Range(Array("Picture 1"))
或者,如果运行宏的工作簿在编译时存在“Logo”
工作表,请将其(名称)
属性设置为,例如,LogoSheet
,然后可以执行以下操作:
Set picture = LogoSheet.Shapes.Range(Array("Picture 1"))
如果它存在于运行宏的工作簿中,但仅在运行时创建,则不需要ActiveWorkbook
:
Set picture = ThisWorkbook.Worksheets("Logo").Shapes.Range(Array("Picture 1"))
如果形状图片1
是单个形状,则范围(数组(…)
内容是多余的,这可能是您所需要的全部(假设您将该工作表的(名称)
属性设置为LogoSheet
:
Set picture = LogoSheet.Shapes("Picture 1")
感谢您的澄清,我们做了更改,但在尝试将图片添加到文本框时,宏的第二部分仍然出错(运行时错误13类型不匹配)@JensDamen per,似乎是Fill。UserPicture
需要的是路径/文件名,而不是Shape
对象。这可能是您的类型不匹配。知道如何更改吗?我尝试用vba通过谷歌搜索在形状中添加形状,但似乎没有什么符合我的需要。这与理解运行时错误91为什么会得到thr完全不同当您不使用Set
关键字分配对象变量时,您可以拥有。您需要在磁盘上获取所需图片,并使用文件名加载。因此,在运行宏时,我将其工作方式更改为手动图片选择器。但现在代码拒绝接受.png文件,我的徽标数据库中有50%是.png文件。
Set picture = ThisWorkbook.Worksheets("Logo").Shapes.Range(Array("Picture 1"))
Set picture = LogoSheet.Shapes("Picture 1")