Excel VBA在图表中粘贴jpeg图片

我正在使用Excel 2013.这是我试过的代码,它不工作。 任何关于如何编写VBA使用jpeg文件来填充图表的build议,或者我已经在图片“图片6”中作为形状的图片谢谢!

Sub PastePic() ActiveSheet.ChartObjects("MainChart").Activate ActiveChart.ChartArea.Format.Fill.UserPicture("S:\CAT\Everyone\Analyse\Kundeplattform\square.jpeg") End Sub 

你的代码看起来很好,适合我。

它看起来像你从networking中检索图片。 尝试将图片移动到本地计算机上的C:驱动器(即C:\square.jpeg ),然后再次尝试macros,这可能是networking问题。

如果这是一个networkingpath造成问题,那么你可以考虑选项1,这是基于山姆的答案。 否则使用选项2,如果你想使用你的形状“图片6”。

选项1)

Sam在他的回答中build议将其复制到本地驱动器。 您可以手动将其复制或通过代码执行。

此代码将从networkingpath将图像复制到用户的临时目录中,然后将其用作图像。

UNTESTED

 Const sPath As String = "S:\blah\blah\Sample.jpg" Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _ (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private Const MAX_PATH As Long = 260 Sub Sample() Dim TempFile As String TempFile = TempPath & "Sample.Jpg" FileCopy sPath, TempFile DoEvents ActiveSheet.ChartObjects("MainChart").Activate ActiveChart.ChartArea.Format.Fill.UserPicture (TempFile) Kill TempFile End Sub Function TempPath() As String TempPath = String$(MAX_PATH, Chr$(0)) GetTempPath MAX_PATH, TempPath TempPath = Replace(TempPath, Chr$(0), "") End Function 

scheme2)

使用Excel文件中已有的形状picture 6

你可以使用我在这里显示的使用.CopyPictureStephen Bullen的PastePicture函数的例子

我能够通过使用文件path的FQPN来解决类似的问题。 因此,而不是filePath = "s:\path\file.png"我使用filePath = "\\server\share\path\file.png"