Application.TraceFlags 属性 (Visio)

获取或设置在 Microsoft Visio 实例化期间记录的事件。 读/写。

语法

表达式TraceFlags

expression:表示 Application 对象的变量。

返回值

Long

备注

TraceFlags 属性的值可以是下列值的组合。

常量 说明
visTraceEvents &H1 事件发生
visTraceAdvises &H2 传出建议调用
visTraceAddonInvokes &H4 加载项调用
visTraceCallsToVBA &H8 VBA 调用

设置 visTraceEvents 标志将导致 Visio 记录大多数正在发生的事件并在“立即”窗口中显示它们。 多数情况下,即使没有外部代理正在侦听或响应事件也会进行记录。 少数情况下,Visio 知道没有针对事件的侦听器就不记录这些事件。 Visio 也不会记录空闲事件或建议。 另外,某些事件是其他事件的特例而不会加以记录。 例如,SelectionAdded 事件是从截然不同的 ShapeAdded 事件中生成的,因此“立即”窗口记录 ShapeAdded 事件而不记录 SelectionAdded 事件。

以下是设置 visTraceEvents 后 Visio 可能记录的一个字符串:

-event: 0x8040 /doc=1 /page=1 /shape=Sheet.1

-event: 之后的数字是发生的事件的代码。 在本例中,0x8040 是 ShapeAdded 事件的代码。 事件代码之后的文本因事件而异。

设置 visTraceAdvises 标志会在 Visio 即将调用事件处理程序过程时在“立即”窗口中写入一行,并在事件处理程序返回后立即写入另一行。 这包括 Microsoft Visual Basic for Applications (VBA) 项目中的事件过程,例如 ThisDocument 中的过程。 以下是您可能看到的内容的示例:

>advise seq=4 event=0x8040 sink=0x40097598 
<advise seq=4 

这些字符串指示对事件处理程序的调用和由事件处理程序返回的内容。 该序列号还指示此事件是 Visio 触发的第四个事件。 该事件的代码是 0x8040,而 Visio 调用的接口的地址是 0x40097598。

设置 visTraceAddonInvokes 标志将记录 Visio 调用 EXE 或 VSL 加载项的时间,以及 Visio 重新获得控制的时间。 下面是一个示例:

>invokeAO: SHOWARGS.EXE 
<invokeAO: completed 

设置 visTraceAddonInvokes 标志还会跟踪调用不存在的加载项的尝试。 例如,如果单元格的公式为 =RunAddon("xxx") 并且没有名为“xxx”的加载项,则会记录“InvokeAO: 未能将‘xxx’映射到已知加载项”消息。

设置 visTraceCallToVBA flag 会在它即将调用 VBA 而不是调用事件过程(使用 visTraceAdvises 记录对 VBA 事件过程的调用)时在“立即”窗口中写入一行,并在 VBA 将控制返回到 Visio 后立即写入另一行。 此标志跟踪宏调用、计算使用 RunAddon 或 CallThis 运算符的单元格引起的对 VBA 过程的调用以及选择自定义菜单或工具栏项引起的调用。 下面是一个示例:

>invokeVBA: Module1.MyMacro 
<invokeVBA: completed 

只有具有 VBA 项目的文档处于打开状态时,才会在“立即”窗口中显示消息。 在这样的文档处于打开状态时,Visio 会对要记录的少量消息进行排队。 但是,如果很长时间内不存在具有项目的文档,则消息会丢失。 如果重新设置 VBA 或者存在未解除的断点,则消息也会丢失。

通过使用标准 Debug.Print 语句,VBA 项目中的代码可以使用 Visio 记录的那些消息来散布自己的消息。 通过使用 Document.VBProject.ExecuteLine("Debug.Print ""somestring"""),非 VBA 项目中的代码可以将消息记录到“立即”窗口中。

TraceFlags 属性记录在注册表的“应用程序”部分的“TraceFlags”项中。

示例

以下 VBA 宏显示如何使用 TraceFlags 属性在“立即”窗口中记录事件、建议、加载项调用和 Visual Basic 调用。

 
Public Sub TraceFlags_Example() 
 
 Application.TraceFlags = visTraceEvents + visTraceAdvises + _ 
 visTraceAddonInvokes + visTraceCallsToVBA 
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。