PowerPoint图表的Excel断开链接

问题描述

我编写了一个代码来断开指向我的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。

,

感谢您的帮助。后来我才意识到,这两张幻灯片上有很多文本框,当我合并其中一些文本框时,问题就解决了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...