我正在使用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
答案 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"
。