VBA在Windows 7上打开PowerPoint演示文稿时失败

7
我在Windows XP的Excel2007中编写了一个VBA宏,用于将Excel电子表格中的数据复制到PowerPoint演示文稿中。 当在新安装的Windows 7上运行这个启用宏的电子表格时失败了。 因此,我提取了导致问题的代码,似乎是在尝试打开现有的PowerPoint文件时失败了。我已经尝试在Office2010和Office2007中运行此代码。
我正在尝试使用以下代码(仅显示问题部分):
Sub test()
   Dim PowerPointApplication As PowerPoint.Application
   Dim PowerPointFile As PowerPoint.Presentation

   Set PowerPointApplication = CreateObject("PowerPoint.Application")
   Set PowerPointFile = PowerPointApplication.Presentations.Open("PATH_TO_FILE\test.pptx")
End Sub

宏在上面的Presentations.Open行出现错误,报错如下。
Run-time error '-2147467259 (80004005)':
Method 'Open' of object 'Presentations' failed

我已在VBEditor的引用设置中启用了PowerPoint 12.0对象库,该电子表格可以在我的Windows XP计算机上无误运行。其他所有引用与该文件完全匹配。
我已在网上寻找答案,但没有找到任何有用信息。我读到了一些关于Windows 7和离线文件的内容,因此尝试关闭它,但没有帮助。
我以管理员用户身份登录,并尝试将正在打开的pptx移动到其他目录,但仍然无法解决问题。
我正在运行以下版本的Windows:
Windows 7 Professional
Service Pack 1
64 Bit

任何帮助都将不胜感激!


如果您删除Powerpoint引用并将“PowerPoint.Application”和“PowerPoint.Presentation”更改为“Object”,会发生什么?在使用“createobject”后添加“PowerPointApplication.Visible=True”。 - Siddharth Rout
代码在我的端上运行良好,只有两个小差异:我声明了一个字符串作为文件路径,并且我的 PowerPoint 版本是 14.0 而不是 12.0。Sid 的方法也很有效。你确定你的路径声明正确吗?你最近更换了电脑,可能已经改变了路径。在我的端上出现 80004005 错误时,通常是因为传递了错误的文件路径。 :) - WGS
感谢您的评论。我刚刚尝试了您建议的方法,取消Powerpoint引用并使用对象类型而不是Powerpoint类型,并添加了Visible=True(我正在使用但忘记在上面的代码中添加),仍然出现相同的错误。问题可能是PowerPoint对象库版本吗?我只运行12个版本? 自从写这篇文章以来,我还更新了Office,因为发布了服务包2,但这完全没有帮助。有其他建议吗? - Andrew Kew
BK201 - 我尝试将文件移动到根目录(C :),因此路径为C:\ file.pptx,仍然出现相同的错误。然后我尝试将路径设置为字符串变量而不是直接在打开函数中设置,但仍然存在相同的问题。 :SFYI:自从今天早上升级后,我现在拥有PowerPoint 14.0对象库,但没有改变,仍然出现错误。 - Andrew Kew
在XP下工作但在Win7下不工作...你可能遇到了UAC问题吗?确保你拥有文件所在目录的完全权限,或者作为一个测试,将其放在你的Temp目录中。 - Steve Rindsberg
显示剩余2条评论
2个回答

0

这在Office 2016和Win7 SP1 64位操作系统上有效。

对于Office 2010应该没问题。

可能是John关于文件路径的建议也可以。

Sub test()
Dim PowerPointFile As PowerPoint.Presentation
Dim PPTObj As Object
Set PPTObj = CreateObject("PowerPoint.application")

Set PowerPointFile = PPTObj.Presentations.Open("C:\test.pptx")

End Sub 

0
PATH_TO_FILE是一个变量(或常量)吗?
如果是的话,应该是这样的: PowerPointFile = PowerPointApplication.Presentations.Open(PATH_TO_FILE & "\test.pptx")

感谢您的评论,John。虽然我是7年前发布的,但从记忆中得知,PATH_TO_FILE不是一个变量,而只是我向您展示代码中存在绝对路径的示例,而没有放置实际路径。非常感谢您的建议。 - Andrew Kew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接