0

我一直在为 2007 Office System 开发一些 Office 加载项。加载项需要知道文件格式,因为它们仅在格式是较新的基于 XML 的压缩格式(docx、xlsx、xlsm、pptx 等)之一时执行其操作。

尽管每个 Office 产品的 API(调用和行为)存在差异,但我还是设法为 Word 和 Excel 生成了工作加载项。在这两种情况下,我都可以检测到保存事件并根据文件格式以及它是保存还是另存为操作进行更改。但是,我来到了 PowerPoint,我正在努力确定文件是什么格式或正在保存为什么格式,以及它是常规保存还是另存为操作。

所以,我的问题是,在 PowerPoint VSTO 加载项中:

  • 有什么方法可以确定文件格式(不仅仅是文件扩展名比较)?
  • 是否可以确定保存是常规保存还是另存为?

更新
好吧,我改变了我的搜索,发现这些问题似乎回答了我的第一个问题(即除了使用扩展之外别无他法),但第二个问题仍然存在(也许直到我改进我的搜索功能)。

4

2 回答 2

2

我记得用PPT,没有办法做到这一点。您必须拦截 OPEN 事件,缓存文档的文件名,然后在保存期间检查文件名。如果相同,则保存,如果不同,则保存为。

如果文档是新的,则不会有初始文件名,因此保存必须是另存为。

于 2011-04-15T19:51:30.980 回答
2

Application.PresentationBeforeSave是要挂钩的事件,它会告诉您这是“另存为...”,因为它发生在“另存为”对话框出现之前。Application.PresentationSave是常规保存(但可以以编程方式用于“另存为...”)

所以我要做的是Dim isSaveAs As Boolean = False在模块中放置一个类似的全局变量,然后Application.PresentationBeforeSave将其设置为True(除非它的参数Cancel = True- 在这种情况下我会将其设置回False)。然后,Application.PresentationSave如果我会检查If isSaveAs = True Then DoThis Else DoThat. 然后isSaveAs回到事件False结束时。Application.PresentationSave

于 2011-04-15T21:12:47.333 回答