使用VBA插入图像并将其保存在文件中 – Excel 2013

我正在为我的一个朋友工作,他需要在Excel文档中导入一组图像,然后在其他计算机上使用此文档。 我遇到的问题是,当在另一台计算机上打开这个文档时,所有的图像都消失了,而你得到了这些小小的错误信号,表明图像path找不到。

我已经开发了我自己的电脑上的macros,我有Excel 2007和我,代码工作得很好。 我的朋友使用Excel 2013,显然,这两个版本如何处理图像导入和保存似乎有一个主要的区别。

总的来说,我发现了2种不同的方式来插入图像。 我尝试的第一个类似于这样的东西:

Set pic = ActiveSheet.Pictures.Insert("C:\documents\somepicture.jpg") 

第二种方法是这样的:

 Set pic = Application.ActiveSheet.Shapes.AddPicture("C:\documents\somepicture.jpg", False, True, 1, 1, 1, 1) 

在第二种方法的文档中说第三个参数(这里是True)负责保存图片和文档。

但是,这两种方法在最终结果上看起来差不多:它们对我来说工作得很好,但如果在Excel 2013的朋友计算机上执行它们,将无法正常工作。所以我需要的是针对较新的Excel版本(我从Excel 2010中读取的地方,有这样的图像导入方法的错误或类似的东西)。

在我所有的用途中,使用Insert添加图片会引用硬盘上的文件,无论出于何种原因,如果要将图像embedded到文件中,必须添加graphics,然后使用AddPicture (就像你使用),我从来没有任何问题。

你也给图片一个像素的高度和宽度,你几乎永远不会看到如下更高的真实设置:

 Application.ActiveSheet.Shapes.AddPicture "C:\documents\somepicture.jpg", False, True, 1, 1, 100, 100 

我有一种感觉,它一直在工作,你只是从来没有看到图片,因为它太小了。

以前的答案真的很有用! 我只是想添加对方法参数的引用(我认为宽度和高度是以像素为单位的,结果是点数):

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.shapes.addpicture.ASPX

我通常会运行一个macros,将服务器中的图像下载到文件中,然后转发给无法访问该服务器的客户端。 我的编码是相当基本的,所以我只是复制我用来插入图片的特定行:

 Set pic = ActiveSheet.Shapes.AddPicture(Filename:="C:\documents\somepicture.jpg", _ linktofile:=msoFalse, savewithdocument:=msoCTrue, Left:=0, Top:=0, Width:=-1, Height:=-1) 

我知道它的技术上与你所提出的代码相同,但是尝试使用msoCTrue和msoFalse。 我似乎记得,成为问题的一部分。 让我知道它是否有效,也许我们可以尝试别的。 它适用于我,所以我们应该能够得到它为你工作。