excel - 将图片从 Excel 形状复制到 VBA 中的 Image 对象

标签 excel vba

我想使用 VBA 将已插入 Excel 电子表格的图片复制到 Image 对象。这是我尝试过的代码:

Dim logo As Image
Set logo = New Image
logo.Picture = ThisWorkbook.Sheets("Sheet1").Pictures("Picture1")

最后一行因类型不匹配错误而失败。当我在监 window 口中查看 logo.Picture 时,它​​被列为 Picture 类型;当我将一个对象变量分配给等号右侧的表达式时,它被列为“图片/图片”类型。我对 VBA 对象层次结构不够熟悉,不知道这些类型是否相关,也不知道如何从一种类型转换为另一种类型,并且尽管进行了认真的 Google 搜索,但仍无法找到任何相关信息。

如果我用以下内容替换最后一行:

logo.Picture = LoadPicture(ThisWorkbook.Path & "\Logo.bmp")

文件加载并且我的程序的其余部分可以工作。我在这里和其他地方搜索了许多帖子,除了建议将图像导出到文件然后使用 LoadPicture 将其导入到 Image 对象之外,没有找到任何有用的东西。关于如何从工作表而不是文件中获取图片有什么建议吗?

如果重要的话,代码的其余部分使用 logo.Picture.Handle 作为 GDI 位图句柄,并将其传递到外部库以在外部设备上显示图像。如果有一种方法可以从不同的对象获取 GDI 位图句柄,那也可以。

最佳答案

您是否尝试过将其作为 OLEObject 插入?

Me.logo.Picture = ThisWorkbook.Worksheets("Sheet1").OLEObjects("Picture1").Object.Picture

您要复制的图像应作为图像(ActiveX 控件)插入到工作表中。

关于excel - 将图片从 Excel 形状复制到 VBA 中的 Image 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42659200/

相关文章:

excel - 循环遍历范围内的行,并根据该行中的单元格将条件格式应用于整列

excel - 如何将两个相邻列的总和放入一个合并单元格(VBA)?

excel - 带有组合框的用户表单 - 输入关键行为

java - 将日期从数据库导入到 Excel 工作表中

java - 它如何设置 "Fit all columns on one page"设置的文件

excel - 从函数中的字典中获取特定值

ms-access - 每当在 Access 中重新选择选项卡式表单时运行 VBA 代码

vba - UsedRange.Count 计数错误

python - 以易于编辑和阅读的方式将嵌套字典导入和导出到 Excel

excel - 如何计算特定范围内的行数?