Excel VBA在图表中粘贴jpeg图片

时间:2014-08-18 12:55:01

标签: excel vba excel-vba

我正在使用excel 2013.这是我尝试过的代码,但它无效。有关如何编写VBA以使用jpeg文件填充图表的任何建议,或者我已经将图片作为图片中的图片称为“图片6”谢谢!!!

Sub PastePic()

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

End Sub

3 个答案:

答案 0 :(得分:1)

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

您好像正在从网络中检索图片。尝试将图片移动到本地计算机上的C:驱动器(例如C:\square.jpeg)并再次尝试宏,这可能是网络问题。

答案 1 :(得分:0)

如果是创建问题的网络路径,那么您可以考虑基于Sam的答案的选项1。如果你想使用你的形状"图片6"

,请使用选项2

选项1)

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

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

<强> 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

选项2)

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

您可以使用我展示的示例HERE使用.CopyPicture Stephen Bullen的PastePicture功能

答案 2 :(得分:0)

我能够通过将FQPN用于文件路径来解决类似问题。因此我使用filePath = "s:\path\file.png"代替filePath = "\\server\share\path\file.png"