【发布时间】:2013-12-15 10:49:36
【问题描述】:
我在 Windows XP 上的 Excel 2007 中编写了一个 VBA 宏,用于将数据从 excel 电子表格复制到 PowerPoint 演示文稿中。 当这个启用宏的电子表格在全新安装的 Windows 7 上运行时,它会失败。 因此,我提取了无法确定问题的代码,并且在尝试打开现有的 powerpoint 文件时似乎失败了。我已尝试在 Office 2010 和 Office 2007 中运行此代码。
我尝试使用的代码(只是下面显示的问题部分)
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 -
代码在我这边工作,有两个小区别:我为文件路径声明了一个字符串,我这边是 PowerPoint 14.0,而不是 12.0。 Sid 的方法也很有效。您确定您的路径声明正确吗?您正在移动计算机,因此它可能已经改变。当我传递错误的文件路径时,会出现我的
80004005错误。 :) -
感谢您的 cmets。我刚刚尝试了您的建议,因此取消链接 Powerpoint 引用并使用 Object 类型而不是 powerpoint 类型,并添加了 Visible=True (我正在使用但忘记添加到上面的代码中)并且仍然得到相同的错误。问题可能出在 PowerPoint 对象库版本上吗?我只跑12?自从写了这篇文章后,我还更新了 Office,因为有一个服务包 2 已发布,但根本没有帮助。还有其他建议吗?
-
BK201 - 我尝试将文件移动到根目录 (C:),因此路径为 C:\file.pptx,但仍然是相同的错误。然后我尝试在字符串变量中设置路径,而不是直接在 Open 函数中设置路径,但仍然是同样的问题。 :S 仅供参考:自从今天早上升级以来,我现在有 PowerPoint 14.0 对象库,没有任何变化,仍然出现错误。
-
在 XP 下工作,但在 Win7 下不工作......您可能遇到了 UAC 问题吗?确保您对存储文件的目录具有完全权限,或者作为测试,将其放在您的 Temp 目录中。
标签: excel vba windows-7 powerpoint