我一直在为2007 Office System的一些Office加载项工作。加载项需要知道文件格式,因为它们只是在格式是较新的压缩的基于XML的格式之一(docx,xlsx,xlsm,pptx等)时执行其操作。
尽管每个Office产品的API(调用和行为)存在差异,但我已设法为Word和Excel生成工作加载项。在这两个中,我可以检测到保存事件并根据文件格式进行更改,以及是保存还是另存为操作。但是,我来到PowerPoint,我正在努力确定文件的格式或保存的格式,以及是常规保存还是保存为操作。
所以,我的问题是,在PowerPoint VSTO加载项中:
更新
好吧,我改变了我的搜索,发现这些问题似乎回答了我的第一个问题(即除了使用扩展名之外没有办法),但第二个问题仍然存在(也许直到我改进了我的搜索功能)。
答案 0 :(得分:2)
我记得PPT,没有办法做到这一点。您必须拦截OPEN事件,缓存文档的文件名,然后在保存期间检查文件名。如果它是相同的,那么它是一个SAVE,如果不同,它是一个保存为。
如果文档是NEW,则没有初始文件名,因此保存必须是另存为。
答案 1 :(得分: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
。