Visio) (Application.TraceFlags 屬性
會取得或設定在 Microsoft Visio 實例期間記錄的事件。 讀取/寫入。
語法
表達式。TraceFlags
expression 代表 Application 物件的變數。
傳回值
Long
註解
TraceFlags 屬性的值可以是下列值的組合。
常數 | 值 | 描述 |
---|---|---|
visTraceEvents | &H1 | 事件發生 |
visTraceAdvises | &H2 | 連出的通知呼叫 |
visTraceAddonInvokes | &H4 | 附加元件的叫用 |
visTraceCallsToVBA | &H8 | VBA 啟動 |
設定 visTraceEvents 旗標 會導致 Visio 記錄大部分事件發生時,並將其顯示在 [即時運算] 視窗中。 在大部分情況下,即使沒有任何外部代理程式正在接聽或回應事件,也會發生這種情況。 在少數情況下,Visio 知道事件沒有接聽程式,而且不會記錄這些事件。 Visio 也不會記錄閑置事件或建議。 此外,某些事件是其他事件的特製化,不會記錄下來。 例如, SelectionAdded 事件是從不同的 ShapeAdded 事件製造,因此 [即時運算] 視窗會記錄 ShapeAdded 事件,而不是 SelectionAdded 事件。
下列是 Visio 在有設定 visTraceEvents 時所可能記錄的字串:
-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 附加元件以及何時重新取得控制。 範例如下:
>invokeAO: SHOWARGS.EXE
<invokeAO: completed
設定 visTraceAddonInvokes 旗標還會追蹤嘗試叫用不存在的附件元件。 例如,如果儲存格的公式是 =RunAddon("xxx"),而且沒有名為 "xxx" 的附加元件,則會記錄此訊息:「InvokeAO:無法將 'xxx' 對應到已知的附加元件」。
如果設定 visTraceCallToVBA flag 旗標,便會剛好在 Visio 進行 VBA 呼叫 (而非事件程序呼叫) 之前在 [即時運算] 視窗中寫入行 (可使用 visTraceAdvises 來記錄對 VBA 事件程序的呼叫)。 這個旗標會追蹤巨集叫用、對 VBA 程序的呼叫 (從使用 RunAddon 或 CallThis 運算元的儲存格評估而產生),以及從自訂功能表或工具列項目的選擇所產生的呼叫。 範例如下:
>invokeVBA: Module1.MyMacro
<invokeVBA: completed
[即時運算] 視窗中不會顯示訊息,除非開啟了具有 VBA 專案的文件。 Visio 會在有此類文件開啟時,將少數訊息排入佇列。 不過,如果長時間沒有具有專案的文件可用,這些訊息就會遺失。 如果 VBA 重設或者有無法解除的中斷點,訊息也會遺失。
VBA 專案中的程式代碼可以使用標準 Debug.Print 語句,將訊息與 Visio 所記錄的訊息交互。 非 VBA 專案中的程序代碼可以使用 Document.VBProject.ExecuteLine (“Debug.Print ”“somestring”“”) ,將訊息記錄到 [實時運算] 視窗。
TraceFlags 屬性是記錄在登錄之 Application 區段的 TraceFlags 項目中。
範例
下列的 VBA 巨集會示範如何使用 TraceFlags 屬性在 [即時運算] 視窗中記錄事件、通知、附加元件叫用和 Visual Basic 叫用。
Public Sub TraceFlags_Example()
Application.TraceFlags = visTraceEvents + visTraceAdvises + _
visTraceAddonInvokes + visTraceCallsToVBA
End Sub
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。