VBA将图像从工作表复制到用户窗体

3
有没有办法在运行时从工作表复制图像到用户窗体图像控件中? 我有一个包含图像的工作表形状。当我选择--> 复制(ctrl + C)此形状,进入 UserForm1 设计 --> image1 属性,我可以在 image1 的图片属性中使用 ctrl + v 将图像从剪贴板粘贴到 image1 控件中。 如何使用 VBA 在运行时实现这一点? 我尝试了 UserForm1.Image1.Picture = ActiveSheet.Shapes("Picture 1").Picture 和许多类似的方法,但都不起作用。 通常会出现“对象不支持此属性或方法”或“类型不匹配”的错误。

如果您在工作表上使用ActiveX图像控件,可以直接将其图片分配给表单上的图片。对于其他图片,请搜索Stephen Bullen的PastePicture代码。 - Rory
1个回答

2

有一段时间我在寻找一个与此问题相同的解决方案。没有找到解决方案,但我找到了一个很好的解决方法:

  1. 创建一个名为user_form_pics的带有大量图片的单独表单。

  2. 然后在您的表单上调用以下内容:

Me.Image1.Picture = user_form_pics.img_name11.Picture

这是如何在构造函数中使用它的:

Private Sub UserForm_Initialize()
    Me.Image1.Picture = user_form_pics.img_name11.Picture
End Sub

它可以工作!现在你的表单有了用户表单图片user_form_pics.img_name11

编辑: 如果您需要将图表保存为图片,则按照以下步骤进行操作:

Option Explicit

Public Sub TestMe()

    Dim chtChart    As Chart
    Dim strPath     As String

    Set chtChart = ActiveSheet.ChartObjects(1).Chart
    strPath = ThisWorkbook.Path & "\myChart.bmp"

    chtChart.Export (strPath)

    UserForm1.Show vbModeless
    UserForm1.Image1.Picture = LoadPicture(strPath)

End Sub

谢谢大家,但我忘了提到。我在从ActiveX控件或用户窗体上的其他图像控件复制方面没有问题。 问题是我想要复制的图片是一个形状。它是通过将图表复制并粘贴到工作表中创建的。我已经得到了形状名称和其他所有信息。我可以选择这个形状等等。我只是无法从中复制图片并将其粘贴到“UserForm.Image.Picture”属性中。 - Sphinx
@Sphinx - 在这种情况下,您应该将图表的图片保存为bmp格式,并保存在与Excel应用程序相同的文件夹中。然后使用其路径和名称引用它。或者至少这是我过去常做的事情... - Vityata
@Sphinx - 请查看编辑后的答案,了解我的意思 :) - Vityata
1
是的,我也知道这个例程。我只是认为有一种简单的方法可以将图片从形状复制到图像控件中。就像从工作表上的ActiveX图像控件复制一样。无论如何,如果可以直接将图像从剪贴板粘贴到表单设计中的“Picture”属性中,那么肯定有一种方法可以实现这一点。谢谢Vityata。 - Sphinx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接