【发布时间】:2021-01-30 10:56:08
【问题描述】:
保存文档后,我需要在 Visio 中执行一个函数。
VBA for Visio 保存后执行如下功能
Private Sub Document_DocumentSaved(ByVal doc As IVDocument)
'Function Code
End Sub
但是,这个函数不会在保存完成之后执行,而是在之前执行。我可以通过 Visio 文件的日期和 Microsoft Office 上传中心来验证这一点,在 VBA 代码完成执行之前它不会启动。 (有问题的 VBA 代码用于与 SharePoint 相关的内容,必须在执行操作之前保存文件。)
一种可能的解决方法是Application.OnTime。该函数可以在保存之前使用,以安排保存完成后代码的执行。不幸的是,Appication.OnTime 在 VBA for Visio 中不可用。
【问题讨论】:
-
我不熟悉在 visio 中执行 vba,但我知道可以将 vba 宏添加到 word 的 normal.dot 模板和 excel 的 personal.xlsb 文件中,从而允许在外部执行 vba文档保存后可以运行代码的文档。
-
其他想法:可能在您的代码中调用 document.save() 并评估返回值或检查是否有错误以验证保存是否完成(但您还需要使用全局变量或阻止它永远调用 _DocumentSaved() 事件)?