通过PowerPoint自动执行Excel-“本地”窗口不公开完整的对象模型(即Linksources)

布雷特杰

背景

我正在运行(从PowerPoint)的代码:

  • 循环浏览演示文稿中的每张幻灯片。
  • 检查每个形状以确定它是否是图表。
  • 如果是图表,请激活基础Excel工作表,然后将该基础文件中的链接更改为新的源。

我注意到,在整个PPT级别[via Info]上都不存在到excel的链接,它们是故意链接到每个图表的,因此可以在不访问源excel文件的情况下编辑演示文稿

该代码可以正常工作。

我认为存在一个持续存在的错误(代码现在可以正常运行),它关系到网络和内存稳定性(大约15张图表后失败),我希望按照为Powerpoint关闭屏幕更新来关闭屏幕更新

问题

我访问的所有图表都链接到其他工作簿。但是,当Excel工作簿暴露于PowerPoint时,即使代码处理了每个链接,链接也不会显示在Locals窗口中(下图显示该链接存在)

我翻转了自动化功能,从Excel访问PowerPoint包,结果相同。没有链接源

使用Excel自动执行PowerPoint时,为什么在“本地”窗口中也无法使用完整的对象模型

这是我偶然发现的局部故障,还是更广泛的问题?

下图显示了链接上的代码(ppl变量,但是xlWB变量没有Linksources)。

在此处输入图片说明

代码

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
尼克失踪

Locals和Watch窗口显示对象的属性。可以在此处找到Workbook对象的属性列表

LinkSources是带有可选Type参数的方法

如果要调试LinkSources,可以将其添加到“监视”窗口中:在此处输入图片说明

或将返回值保存到本地变量中以在“本地”窗口中查看它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Eclipse中自动打开完成窗口

通过签名的URL上传到Google Cloud Storage-对象不公开

自动执行工作:将Powerpoint项目符号文本导入Excel工作表

通过Visual C ++自动执行Excel时如何防止超时?

从 Powerpoint 添加对 Excel 对象库的引用

在Excel宏中使用Powerpoint Shape对象

通过Excel VBA保存和关闭Powerpoint

通过Powerpoint动画顺序使对象组出现和消失

如何通过自定义按钮打开完整的首选项对话框?

使用Javascript通过chrome打开完整文件下载URL时如何指定下载位置

无法通过VBA执行Powerpoint 2010中的刷新图表数据

尝试在PowerPoint中重命名单个Excel对象

更改链接 Excel 工作表 - 图表对象 Powerpoint VBA

在Excel上加载PowerPoint对象库-“加载DLL时出错”

通过脚本自动创建 SSAS 表格模型

通过python自动执行.get请求

通过串行通讯自动执行登录操作

通过属性公开子对象

通过ssh发送的条件在本地执行,而不是远程执行

Django通过链接对模型执行操作

为什么对象通过引用自动传递?

通过“每个”创建对象并自动命名它们

通过AWS CLI同步后,AWS S3存储桶中的文件不公开

通过Excel从PowerPoint中格式化表格样式-2013

Access 2013 VBA自动使Excel丢失窗口

执行:通过其指针删除对象

在长模式(即64位模式)下如何通过64位平面分页内存模型执行堆栈操作?

在IE Web对话窗口中自动执行HTML文档?

如何隐藏,关闭并等待自动执行的cmd窗口