我需要能够在PowerPoint 2003中以OpenXML(“.pptx”)保存演示文稿(以编程方式)。 我安装了Microsoft Office兼容包。这确实允许我从PowerPoint 2003执行“另存为PowerPoint 2007演示文稿”。
如何以编程方式执行此操作? (例如VBA)
我试过Presentation.SaveAs
:
虽然PowerPoint 2003中PpSaveAsFileType
没有固有的ppSaveAsOpenXMLPresentation
枚举值,但我创建了一个打印PpSaveAsFileType
值的程序,并在运行时发现ppSaveAsOpenXMLPresentation = 24
。
然而,我尝试过:
SaveAs(@"c:\temp\saveas\pupik.pptx", (PpSaveAsFileType) ((int) 24), MsoTriState.msoTrue);
并获得“无效枚举值”例外
任何想法如何使这项工作?
(PS - 我知道网上有几个人已经提出过这个问题,但没有提供任何解决方案。)
谢谢, 阿瑞
答案 0 :(得分:4)
编辑>一些语法
AFAIK pptx格式不支持启用宏的演示文稿,因此如果您的代码在您尝试保存的演示文稿中,则无法使用。
我现在没有Excel 2003,但如果兼容包在配置对话框,默认保存格式,中启用了选项“pptx”,那么您正试图保存另一个演示文稿我想你可以使用类似的东西:
MyOtherPresentation.SaveAs "C:\Mypres", ppSaveAsDefault
请注意,这可能仅在以前以ppt格式保存演示文稿时才有效
修改强>
如果上述方法不起作用,您可以尝试不同的方法。以旧格式保存文件并调用转换程序:
<强> ppcnvcom.exe 强>
有关示例,请参阅here(使用wordconv.exe,但基本相同)
确保安装了所有办公室升级,因为如果不是,程序结束
报告没有错误,什么都不做。
<强> OFC 强>
有关说明,请参阅here
并here进行了很好的讨论
HTH!
答案 1 :(得分:3)
一个技巧是修改注册表中应用程序的默认保存格式,然后保存并最终再次恢复原始保存格式。
相关密钥是
Software\Microsoft\Office\11.0\PowerPoint\Options
创建名称为DWORD
的{{1}}值,并将其设置为0x21以保存为PPTX。
DefaultFormat
答案 2 :(得分:0)
我使用了ppcnvcom.exe,但请注意,与大量帖子不同,我只使用了没有-nme开关的-oice开关
答案 3 :(得分:0)
对于VBA,这有效:
Sub TestSaveas()
SaveAs "c:\somefilepath\"
End sub
Private Sub SaveAs(fp As String)
Dim dlgSaveAs As FileDialog
Dim strMyFile As String
Set dlgSaveAs = Application.FileDialog(msoFileDialogSaveAs)
With dlgSaveAs
.InitialFileName = fp
If .Show = -1 Then
strMyFile = .SelectedItems(1)
Application.ActivePresentation.SaveAs strMyFile
'MsgBox strMyFile
''-- save your file to strMyFile here
Else
MsgBox "File not saved"
End If
End With
dlgSaveAs.Execute
Set dlgSaveAs = Nothing
End Sub
答案 4 :(得分:0)
我知道这是一个老问题,但我最近解决了这个问题:
Presentation.SaveCopyAs "c:\temp\saveas\pupik.pptx"
而不是SaveAs
。效果很好,无论原始格式是ppt-还是pptx格式。
(如果没有重新打开演示文稿,我无法获得提及的注册表更改方法。)