从PowerPoint 2003以编程方式另存为PowerPoint 2007(pptx)

时间:2010-06-29 23:03:30

标签: powerpoint openxml powerpoint-vba

我需要能够在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 - 我知道网上有几个人已经提出过这个问题,但没有提供任何解决方案。)

谢谢, 阿瑞

5 个答案:

答案 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格式。

(如果没有重新打开演示文稿,我无法获得提及的注册表更改方法。)