Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerPoint中更新链接的Excel图表_Excel_Vba_Powerpoint - Fatal编程技术网

在PowerPoint中更新链接的Excel图表

在PowerPoint中更新链接的Excel图表,excel,vba,powerpoint,Excel,Vba,Powerpoint,我可以通过进入文件->链接->自动更新来实现这一点 但是,这会导致其他人的计算机崩溃。这可能是一个兼容性问题,因为我正在使用PowerPoint 2016 我有30多个图表,我想更新 我尝试了以下VBA,但最终从Excel弹出一个窗口,显示: Microsoft Excel正在等待另一个应用程序完成OLE操作 这持续出现了15分钟 子变更图表数据 将pptChart变暗为图表 Dim pptChartData作为图表数据 Dim pptWorkbook作为对象 将sld变暗为幻灯片 将shp变暗

我可以通过进入文件->链接->自动更新来实现这一点

但是,这会导致其他人的计算机崩溃。这可能是一个兼容性问题,因为我正在使用PowerPoint 2016

我有30多个图表,我想更新

我尝试了以下VBA,但最终从Excel弹出一个窗口,显示:

Microsoft Excel正在等待另一个应用程序完成OLE操作

这持续出现了15分钟

子变更图表数据 将pptChart变暗为图表 Dim pptChartData作为图表数据 Dim pptWorkbook作为对象 将sld变暗为幻灯片 将shp变暗为形状 对于ActivePresentation.Slides中的每个sld 对于sld形状中的每个shp 如果是shp.HASCART,则 设置pptChart=shp.图表 设置pptChartData=pptChart.ChartData pptChartData.Activate 设置pptWorkbook=pptChartData.Workbook 出错时继续下一步 '更新第一个链接 pptWorkbook.UpdateLink pptWorkbook.LinkSources1 错误转到0 pptWorkbook。关闭True 如果结束 下一个 下一个 设置pptWorkbook=Nothing 设置pptChartData=Nothing 设置pptChart=Nothing 端接头
我想尝试的一件事是,改变这一点:

On Error Resume Next
'update first link
pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
On Error GoTo 0
对这个。我早些时候问过,如果你在下一次恢复时删除错误,而你从未回答,会发生什么。一般来说,你永远不应该这样做,除非你绝对确定你知道你在做什么,并且充分处理了潜在的错误,在这种情况下,你可能没有,但我不知道是否有错误

'On Error Resume Next
'update first link
pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
'On Error GoTo 0
如果出现错误,请告知给出的具体错误消息

如果这不会引发错误,但会导致相同的问题,请尝试以下方法:

'On Error Resume Next
'update first link
pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
'On Error GoTo 0
Exit For   '### Get out of the loop
如果,正如您所说,所有图表都链接到相同的数据,那么我认为退出是安全的,以避免多余的调用,而这些调用没有任何作用。仍然存在问题,请尝试:

'On Error Resume Next
'update first link
pptWorkbook.RefreshAll
'On Error GoTo 0
Exit For   '### Get out of the loop
最后,我怀疑这可能真的有效,试试这个。您已经说过没有公式引用或外部链接数据库、文本、web查询等,所以似乎不需要进行刷新,甚至UpdateLink似乎毫无意义。只需激活chartdata工作表,然后立即关闭它,它似乎应该更新PPT嵌入式Excel工作表和图表中的数据。至少当我在一个非彭博的文件上测试时是这样

pptChartData.Activate
Set pptWorkbook = pptChartData.Workbook
'On Error Resume Next
'update first link
'pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
'On Error GoTo 0
pptWorkbook.Close True
Exit For
注意:您再次希望退出,因为将同一文件刷新30次没有意义。

对于我来说:

For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasChart Then
                shp.Chart.ChartData.Activate
                shp.Chart.ChartData.Workbook.UpdateLink shp.Chart.ChartData.Workbook.LinkSources(1)
                shp.Chart.ChartData.Workbook.Close True
            End If
        Next
    Next

i、 e.不创建新变量,只使用原始变量。

我今天在同事的笔记本电脑上遇到这种情况。要解决此问题,请在Excel中转到文件>信任中心>信任中心设置>外部内容选择顶部单选按钮启用所有数据连接

Excel的弹出/警报具体说明了什么?你能添加截图吗?如果您删除了On Error Resume Next语句,会发生什么情况?文件->链接->自动更新-通常这本身不会崩溃,但如果用户通过访问链接文件与网络断开连接,这可能是一个问题。在慢速网络连接上,这可能会出现挂起/无响应的外观,但您通常只需要等待它获取这些文件。除其他外,这些都是OLE/嵌入式图表数据通常难以处理且不可靠的原因。不幸的是,我在家工作,因此无法给出准确的屏幕截图。但是,错误消息说Microsoft Excel正在等待另一个应用程序完成OLEaction@DavidZemens用户可以使用链接的文件访问网络。用户说他们等了10-15分钟才关掉powerpoint。不幸的是,我们正在从包含高频数据的电子表格中获取图表,并将其放入.ppt文件中,以便更轻松地更新ppt,每次手动重新创建ppt。我以前看到过提示/警告,让我试着记住它的含义…非常感谢!我明天会试试这个,然后告诉你事情的最新进展。我没有连接到文件atm,但我可能会随意玩一些excel文件,看看会发生什么。嗨。尝试第一个建议后,宏会不断要求Excel将工作表另存为新文件。保存它的弹出窗口将继续弹出,即使我保存了它的新版本。不知道是什么导致了这种行为。跳到最后一个选项,看看是否有效,只需激活并关闭工作簿。。。