Excel VBA:将图片从图像控件复制到activeX对象

时间:2011-10-10 22:34:40

标签: excel image vba excel-vba activex

我有一系列图像需要在两种形式(通过图像控件)和工作表(通过activeX图像控件)上多次显示。我知道我可以在外部保存文件并使用loadpicture方法;但是如果可能的话,我想避免一些事情。

我也知道我可以保存并加载 - 但我不想再使用外部文件写来执行任务。理想情况下,所有内容都将保持嵌入并隐藏在文件本身中。

我认为使用剪贴板可能有一个解决方案 - 但我无法使用语法。对象始终嵌入在相同的位置;它永远不会移动或改变大小或其他属性(超出.visible)。所以我真正想做的就是简单的事情;

Sheet1.oleobjects("toImage").object.picture = frm1.fromImage.picture

**编辑:**
我想我找到了解决方案;但仍然有一个相关的问题。

如果我在一张纸上嵌入一系列的activeX图像,我发现我能做我想做的事情;然后在我想要的实际控件/对象中引用它们。所以;

Sheet1.oleobjects("toImage").object.picture=Sheet1.oleobjects("FromImage").object.picture

frm1.Controls("toImage").picture = Sheet1.oleobjects("FromImage").object.picture

但是,当我尝试使用插入的图片(形状对象)做同样的事情时,下面的代码不起作用;

frm1.toImage.picture =  sheet1.shape("FromImage").picture

..是无效的语法。似乎我唯一可以做的就是复制它们 - 我不能用它们来设置另一个对象的图片而不使用剪贴板。

上面的解决方案适合我(使用一系列activeX图像对象而不是图片) - 但我很好奇为什么我不能使用标准图片(形状)。

1 个答案:

答案 0 :(得分:0)

如果要在Excel工作表中添加图片,请使用以下内容:
(您可以将ActiveSheet更改为您最喜欢的表格)

Dim aSheet As Worksheet
Dim aShape As Shape
Set aSheet = ActiveSheet
Set aShape = aSheet.Shapes.AddPicture("<FileName>", msoFalse, msoTrue, 120, 120, 200, 200)

有关详情:

  

函数AddPicture (文件名为字符串,LinkToFile为MsoTriState,SaveWithDocument为MsoTriState,左为单,顶部为单,宽度为单,高度为单)作为形状

     

函数AddPicture2 (文件名为字符串,LinkToFile为MsoTriState,SaveWithDocument为MsoTriState,左为单,顶部为单,宽度为单,高度为单,高度为MsoPictureCompress)为Shape


如果您想将图片加载到表单上的Image组件:
(将Image组件添加到表单[:Image1])

Set Image1.Picture = LoadPicture("<FileName>")