2011-10-10 103 views
0

我有一系列图像需要在两种窗体(通过图像控件)和工作表(通过ActiveX控件)上多次显示。我知道我可以在外部保存文件并使用loadpicture方法;但如果可能的话,我想尽量避免。Excel VBA:将图像从图像控件复制到activeX对象

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

我认为可能有使用剪贴板的解决方案 - 但我无法使语法工作。该对象始终嵌入在相同的位置;它永远不会移动或更改大小或其他属性(超出.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图像对象而不是图片) - 但我很好奇为什么我无法使用标准图片(形状)。

+0

是否要将嵌入到表单中的图像加载到表单中,反之亦然?图像如何从文件系统转换成形式? – MikeD

+0

MikeD; (表单到表单和表单到表单) - 尽管这可能是表单到表单)。所有图片将从文件系统嵌入。我已经用更多的信息更新了这个问题 - 设法找到一个适用于此实例的解决方法。我认为我现在的问题更多的是针对我为什么不能用一个能够控制的图片(形状)对象来做事情。 – Surferosa

回答

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) 

而对于更多的细节:

函数添加图片(文件名为字符串,LinkToFile为MsoTriState,SaveWithDocument为MsoTriState,左侧为单个,顶部为单个,宽度为单个,高度为单个)形状为

功能AddPicture2(文件名作为字符串,LinkToFile作为MsoTriState类型,SaveWithDocument作为MsoTriState类型,左单,上单,宽度单身,身高单,压缩作为MsoPictureCompress)为形状


如果你想将图片加载到您的Image组件的形式:
(添加Image组件添加到您的形式[:图像1])

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