Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macros 使宏可用于任何Visio文档_Macros_Visio - Fatal编程技术网

Macros 使宏可用于任何Visio文档

Macros 使宏可用于任何Visio文档,macros,visio,Macros,Visio,我想创建一些宏,并能够在任何Visio文档中使用它们。我知道使用“录制宏功能”创建宏的基本知识,但这样录制的宏似乎仅适用于该Visio文件。我一直在寻找如何做到这一点,但在如何做到这一点上还没有成功。任何帮助都将不胜感激。我想您的意思是希望在Visio文档中编写代码,调用在另一个Visio文档中编写的代码。我知道有两种方法可以使用VBA实现这一点 第一种方法是对文档对象使用ExecuteLine方法。您只需传入一行希望在该文档中作为字符串参数调用的VBA,代码就会被调用。这实际上只适用于调用不带

我想创建一些宏,并能够在任何Visio文档中使用它们。我知道使用“录制宏功能”创建宏的基本知识,但这样录制的宏似乎仅适用于该Visio文件。我一直在寻找如何做到这一点,但在如何做到这一点上还没有成功。任何帮助都将不胜感激。

我想您的意思是希望在Visio文档中编写代码,调用在另一个Visio文档中编写的代码。我知道有两种方法可以使用VBA实现这一点

第一种方法是对文档对象使用ExecuteLine方法。您只需传入一行希望在该文档中作为字符串参数调用的VBA,代码就会被调用。这实际上只适用于调用不带参数的宏,或者如果它们带参数,则只带字符串/数字参数

第二种方法是保存文档(通常是vss*模具文件,如果您在宏中提供模板形状),在任何其他文档中,您只需设置对代码文件的引用。这允许VB编辑器具有intellisense并查看宏文件中可以调用的所有方法,并且可以传递方法可以接受的任何类型的参数

现在,如果您只对通过UI操作调用/调用中心文件中的简单方法感兴趣,那么有许多不同的方法可以做到这一点。您可以将代码分配给不同的形状,即当形状移动或双击时。可以在ShapeSheet窗口中为“事件”部分中的形状指定此选项

您还可以在Visio页面的右侧绘制命令按钮或任何其他VBA控件,并将宏指定给这些按钮

或者您可以转到工具->宏->(您的文档名),代码文件中的每个模块都会有更多的下拉列表,您可以在其中调用任何没有参数的公共子模块

或者,您可以使用调用代码的按钮构建工具栏(在pre Visio 2010中)或功能区界面。根据我的经验,为VBA解决方案构建工具栏有点糟糕。工具栏按钮必须调用文档中包含的代码,以使代码生效。因此,假设您将所有代码都写入并保存在VSS文件中,该文件在任何时候打开新文档时都会调用为新文档添加工具栏的方法。当您将代码分配给该工具栏上的按钮时,该工具栏假定您分配的代码驻留在您打开的新文档中,而不是VSS文件中。因此,要使按钮调用VSS文件,必须在新文档中有一个方法,该方法使用ExecuteLine调用VSS文件中的实际代码。这是一个难题,因为现在用户必须使用您提供的VST模板文件,而不是理论上在他们想要的任何图形上使用您的工具


很抱歉这么说,但是Visio在如何调用代码方面非常灵活,因此您可能可以做任何您想做的事情。

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