我想使用 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/