我正在运行代码(来自PowerPoint):
我注意到excel的链接在整个PPT级别[通过Info
]不存在,它们被故意链接到每个图表,以便可以在不访问源excel的情况下编辑演示文稿文件的
代码适用 - 广泛。
有一个持续的错误(代码现在正常运行),我认为这与网络和内存稳定性有关(在大约15个图表之后失败),我希望按照{{关闭screenupdating 3}}
我访问的所有图表都链接到其他工作簿。然而,当Excel工作簿暴露给PowerPoint时, Linksources 不会显示在Locals
窗口中,即使代码处理每个链接(下图显示链接存在)
我翻转了自动化以从Excel访问PowerPoint包,结果相同。没有 Linksources 。
为什么在使用Excel自动化PowerPoint时, Locals 窗口中的完整对象模型也不可用?
这是一个我偶然发现的局部故障,还是一个更广泛的问题?
下图显示了迭代链接的代码(ppl
变量,但xlWB
变量没有 Linksources )。
Turn off screenupdating for Powerpoint
码
Sub FastUpdate()
Dim sld As Slide
Dim shp As Shape
Dim pptchrt As Chart
Dim pptChrtData As ChartData
Dim xlWB As Excel.Workbook
Dim lngStart As Long
Dim strNew As String
Dim strMsg As String
Dim ppl As Variant
On Error GoTo cleanup
'set start position manually
'lngStart = 34
If lngStart = 0 Then lngStart = 1
'call custom function for user to pick file
'strNew = Getfile
strNew = "S:\Corporate Model\05 RSM submissions\05 May 2016\02 Checked RSMs\VFAT\Australia\Australia - Valuation and Financial Analysis template.xlsx"
For Each sld In ActivePresentation.Slides
If sld.SlideIndex >= lngStart Then
For Each shp In sld.Shapes
If shp.HasChart Then
Set pptchart = shp.Chart
Set pptChrtData = pptchart.ChartData
'open underlying excel file - doesn't just activate chart
pptChrtData.Activate
'
Set xlWB = pptChrtData.Workbook
'loop through all links
For Each ppl In xlWB.LinkSources
strMsg = strMsg & SlideNumber & " " & pptchart.Name & vbNewLine
xlWB.ChangeLink ppl, strNew
Next
xlWB.Close True
Set xlWB = Nothing
End If
Next shp
End If
Next sld
cleanup:
Set xlWB = Nothing
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical
If Len(strMsg) > 0 Then MsgBox strMsg, vbOKOnly, "Completed"
End Sub
答案 0 :(得分:3)
Locals和Watch窗口显示对象的属性。可以找到Workbook对象的属性列表here。
LinkSources是一个带有可选Type
参数的方法。
如果要调试LinkSources
,可以将其添加到Watch窗口:
或将返回值保存到本地变量变量以在“局部”窗口中查看它。