Excel VBA在图表中粘贴jpeg图片

Excel VBA在图表中粘贴jpeg图片,vba,excel,Vba,Excel,我正在使用excel 2013。这是我尝试过的代码,它不起作用。关于如何编写VBA的任何建议,可以使用jpeg文件填充图表,也可以使用我已经在名为“picture 6”的表格中作为形状的图片,谢谢 Sub PastePic() ActiveSheet.ChartObjects("MainChart").Activate ActiveChart.ChartArea.Format.Fill.UserPicture("S:\CAT\Everyone\Analyse\Kundeplattform\sq

我正在使用excel 2013。这是我尝试过的代码,它不起作用。关于如何编写VBA的任何建议,可以使用jpeg文件填充图表,也可以使用我已经在名为“picture 6”的表格中作为形状的图片,谢谢

Sub PastePic()

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

End Sub

如果是一个网络路径正在产生问题,那么你可以考虑基于山姆的答案的选项1。否则,如果您想使用E形状“图片6”,请使用选项2

选项1)

按照Sam在回答中的建议,将其复制到本地驱动器。您可以手动复制它,也可以通过代码进行复制

此代码将从网络路径将映像复制到用户的临时目录,然后将其用作映像

未经测试

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
选项2)

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


您可以使用我展示的示例,该示例使用了
.CopyPicture
Stephen Bullen的PastePicture函数

您的代码看起来不错,适合我


看起来您正在从网络中检索图片。尝试将图片移动到本地计算机上的
C:
驱动器(即
C:\square.jpeg
),然后重试宏,这可能是网络问题。

我可以通过使用FQPN作为文件路径来解决类似问题。因此,我没有使用
filePath=“s:\path\file.png”
而是使用
filePath=“\\server\share\path\file.png”

您的代码看起来很好。看起来您正在从网络中检索图片。尝试将图片移动到本地机器上的
C:
驱动器(即
C:\square.jpeg
)上,看看是否有效。+1我也认为这可能是原因。