问题描述
我编写了一个代码来断开指向我的Powerpoint平台的源excel文件的链接,该宏工作正常,除了2个图表。两种图表都在同一张幻灯片上(并不少见),它们都是折线图。图表需要手动更新,但数据仅驻留在excel文件中。不知道我在想什么。这是我写的代码
Sub SavePPT()
Dim objPP As Object
Dim objPPFile As Object
Dim sld As Object
Dim shp As Object
Dim shp1 As Chart
Dim newshp As Shape
Dim pptChart As Object
Set objPP = CreateObject("PowerPoint.Application")
objPP.Visible = True
Set objPPFile = objPP.ActivePresentation
objPPFile.Save
Application.EnableEvents = False
For Each sld In objPPFile.Slides
For Each shp In sld.Shapes
If shp.HasChart Then
shp.LinkFormat.BreakLink
On Error GoTo 0
End If
Next
Next
Application.EnableEvents = False
For Each sld In objPPFile.Slides
For Each shp In sld.Shapes
If shp.Type = msoLinkedOLEObject Or shp.Type = msoEmbeddedOLEObject Then
shp.LinkFormat.BreakLink
On Error GoTo 0
End If
Next
Next
objPPFile.SaveAs ("Location" _ & Format(Now(),"MM-DD-YYYY") & ".pptx")
objPPFile.Close
objPP.Quit
Set pptChart = Nothing
Set objPPFile = Nothing
Set objPP = Nothing
End Sub
解决方法
该图表可能位于一个占位符中,在这种情况下,您的代码都不会对其起作用。如果形状的.Type = msoPlaceholder(即14),请检查形状的.PlaceholderFormat.ContainedType属性以查看它是linkedOleobject还是.HasChart等。
顺便说一句,一个msoEmbeddedOLEObject不会有一个.LinkFormat对象可以调用;我怀疑您有一些错误处理代码掩盖了那里的错误。无论如何,我会将检查范围限制为仅msoLinkedOLEObject。
,感谢您的帮助。后来我才意识到,这两张幻灯片上有很多文本框,当我合并其中一些文本框时,问题就解决了。