2011-08-27 27 views
1

我想要創建許多宏並能夠在任何Visio文檔中使用它們。我知道使用「錄製宏功能」創建宏的基本原理,但看起來這樣記錄的宏只適用於該Visio文件。我已經搜索瞭解如何做到這一點,但在如何做到這一點方面還沒有取得成功。任何援助將不勝感激。使宏可用於任何Visio文檔

回答

0

我假設你的意思是你想要在Visio文檔中編寫調用其他Visio文檔中寫入代碼的代碼。我知道用VBA做這件事有兩種方法。

第一個是對Document對象使用ExecuteLine方法。您只需傳入一行VBA,您想在該文檔中調用該字符串作爲字符串參數,並調用代碼。這真的只適用於調用不帶任何參數的宏,或者如果他們這樣做,只是字符串/數字參數。

第二種方法是保存文檔(通常是vss * stencil文件,如果您使用宏提供模板形狀),並在任何其他文檔中只設置對代碼文件的引用。這允許VB編輯器具有智能感知並查看可以在宏文件中調用的所有方法,並可以傳遞您的方法可以採用的任何類型的參數。

現在,如果您只想通過UI操作在中央文件中調用/調用簡單方法,可以採用許多不同的方法來執行此操作。您可以將代碼分配給不同的形狀,即每當形狀移動或雙擊時。這可以在ShapeSheet窗口中爲事件部分中的形狀分配。

您還可以在Visio頁面上繪製命令按鈕或任何其他VBA控件,並將這些宏分配給這些按鈕。

或者你可以去工具 - >宏 - >(你的文檔名稱),並且你的代碼文件中的每個模塊會有更多的下拉列表,你可以調用任何沒有參數的公共子集。

或者您可以使用調用代碼的按鈕構建工具欄(在Visio 2010之前)或功能區界面。根據我的經驗,爲VBA解決方案構建工具欄雖然有些蹩腳。工具欄按鈕必須調用包含在您希望代碼執行的文檔中的代碼。因此,假設您將代碼全部寫入並保存在VSS文件中,每當打開新文檔時,都會調用一個爲新文檔添加工具欄的方法。當您將代碼分配給該工具欄上的按鈕時,工具欄會假定您分配的代碼位於您打開的新文檔中,而不是您的VSS文件。因此,爲了讓你的按鈕調用你的VSS文件,你必須在你的新文檔中使用ExecuteLine來調用你的VSS文件中的實際代碼。這很痛苦,因爲現在你的用戶必須使用你提供的VST模板文件,而不是理論上在你想要的任何圖紙上使用你的工具。

不好意思,但是Visio在如何調用代碼方面非常靈活,所以你可以做任何你想做的事情。

1

我的解決方案是將我的宏保存在模具中。只要您打開模板,代碼即可用於活動圖形。現在,如果我只是想出如何在模板中放置「按鈕」來激活特定的宏...