【问题标题】:VBA fails when opening PowerPoint presentation on Windows 7在 Windows 7 上打开 PowerPoint 演示文稿时 VBA 失败
【发布时间】: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.ApplicationPowerPoint.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


【解决方案1】:

PATH_TO_FILE 是变量(或常量)吗?

如果是这样不应该是

PowerPointFile = PowerPointApplication.Presentations.Open(PATH_TO_FILE & "\test.pptx")

【讨论】:

  • 感谢您的评论约翰,虽然我在 7 年前发布了这个,但从内存中 PATH_TO_FILE 不是变量,而只是我向您展示代码中存在绝对路径的一个示例,没有放实际路径,但感谢您的建议。
【解决方案2】:

这确实适用于 Win7 SP1 64 位操作系统上的 Office 2016

应该适用于 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 

【讨论】:

    猜你喜欢
    • 2023-02-24
    • 2013-06-03
    • 2020-11-03
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多