Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Excel 在Windows 7上打开PowerPoint演示文稿时VBA失败_Excel_Vba_Windows 7_Powerpoint - Fatal编程技术网

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

Excel 在Windows 7上打开PowerPoint演示文稿时VBA失败,excel,vba,windows-7,powerpoint,Excel,Vba,Windows 7,Powerpoint,我在WindowsXP上的Excel2007中编写了一个VBA宏,将Excel电子表格中的数据复制到powerpoint演示文稿中。 在新安装的Windows 7上运行此启用宏的电子表格时失败。 因此,我提取了无法指出问题的代码,并且在尝试打开现有powerpoint文件时似乎失败了。我已经尝试在Office2010和Office2007中运行此代码 我正在尝试使用的代码(只是下面显示的问题部分) 宏在演示文稿上失败。打开上面的行,出现以下错误 Run-time error '-21474672

我在WindowsXP上的Excel2007中编写了一个VBA宏,将Excel电子表格中的数据复制到powerpoint演示文稿中。 在新安装的Windows 7上运行此启用宏的电子表格时失败。 因此,我提取了无法指出问题的代码,并且在尝试打开现有powerpoint文件时似乎失败了。我已经尝试在Office2010和Office2007中运行此代码

我正在尝试使用的代码(只是下面显示的问题部分)

宏在演示文稿上失败。打开上面的行,出现以下错误

Run-time error '-2147467259 (80004005)':
Method 'Open' of object 'Presentations' failed
我已经在电子表格的VBEditor中的“引用”设置中启用了PowerPoint 12.0对象库。所有其他引用都与在“我的Windows XP”框中运行且没有错误的文件完全匹配

我在网上到处寻找答案,但什么也找不到。我读了一些关于Windows7和脱机文件的内容,所以尝试关闭它,但没有任何帮助

我也以管理员用户身份登录,并尝试将我打开的pptx移动到其他目录,但没有成功

我正在运行以下版本的Windows:

Windows 7 Professional
Service Pack 1
64 Bit

任何帮助都将不胜感激

文件的路径是变量(或常量)

如果是这样的话,难道不是吗


PowerPointFile=PowerPointApplication.Presentations.Open(路径到文件&“\test.pptx”)

这在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 

如果删除Powerpoint引用并将
Powerpoint.Application
Powerpoint.Presentation
更改为
对象,会发生什么情况?另外,在
createobject
之后添加一个
PowerPointApplication.Visible=True
,代码在我这端工作,有两个小区别:我为文件路径声明了一个字符串,我这端是PowerPoint 14.0,而不是12.0。希德的方法也很有效。您确定您的路径声明正确吗?您正在移动计算机,因此它可能已更改。当我传递错误的文件路径时,会显示我端的
80004005
错误。:)谢谢你的评论。我只是尝试了你的建议,因此取消了Powerpoint引用的链接,使用对象类型而不是Powerpoint类型,并添加了Visible=True(我正在使用它,但忘记添加到上面的代码中),但仍然得到相同的错误。问题可能是PowerPoint对象库版本吗?我只跑了12英里?自从写了这篇文章之后,我还更新了Office,因为发布了一个ServicePack2,但这一点都没有帮助。还有其他建议吗?BK201-我尝试将文件移动到根目录(C:),因此路径是C:\file.pptx,但仍然是相同的错误。然后我尝试在字符串变量中设置路径,而不是直接在Open函数中设置路径,但仍然存在相同的问题:仅供参考:自从今早升级后,我现在有PowerPoint 14.0对象库,没有任何更改,仍然会出现错误。在XP下工作,但在Win7下不工作。。。您可能会遇到UAC问题?确保您对存储文件的目录拥有完全权限,或者作为测试,将其放在临时目录中。感谢您的评论John,尽管我在7年前发布了这篇文章,但从内存中看,PATH_TO_文件不是一个变量,只是我向您展示代码中存在绝对路径的一个示例,没有给出实际路径,但感谢您的建议。
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