2011-08-27 140 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

我的解决方案是将我的宏保存在模具中。只要您打开模板,代码即可用于活动图形。现在,如果我只是想出如何在模板中放置“按钮”来激活特定的宏...