【问题标题】:Execute Routine After Save保存后执行例程
【发布时间】: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() 事件)?

标签: vba visio


【解决方案1】:

请注意,文件在保存时甚至可能不会转到 SharePoint(如果您离线工作,则可以将其保存在本地)。并在几小时后上传,例如当互联网连接恢复时......

无论如何。您可以尝试使用Application.VisioIsIdle,它会在 Visio 不忙于其他任何事情时定期调用,但请注意它的调用频率很高,因此您需要自己添加一些时间管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多