高级自定义 > 业务逻辑自定义 > DTI 自定义框架 > 在 Microsoft Office 中自定义 Windchill 选项卡 > 使用宏创建自定义命令
  
使用宏创建自定义命令
Windchill Desktop Integration 仅期望宏代码可用于所讨论的 Office 文档。
DTI 可运行以下两种类型的宏:已通过 import_module 操作插入到 Office 文档中的宏,或该文档中已存在的宏。
* 
PTC 建议在将宏上载到 Windchill 服务器进行部署之前,使用实时 Microsoft Office 文档对宏进行全面测试。Windchill Desktop Integration 不对宏执行过程中产生的任何异常负责。所有错误都会显示给用户。
以下示例显示了自定义操作配置:
<action method="run_macro" type="CLIENT">
<defaultdata key="macro_name">Macro1</defaultdata>
<defaultdata key="macro_args">Albert Einstein</defaultdata>
</action>
* 
macro_name 键是保留的强制关键字。
macro_args 是可选关键字,可在需要向宏提供附加数据时使用。
处理多个输入
如果宏需要多个输入,则 PTC 建议使用宏本身中的 VBA 代码对此进行处理。
例如,假设宏需要多个自变量,则可能会生成一个 XML 文件,其中包含相关数据以及作为 macro_args 值提供的相对文件名。此 XML 文件可在服务器上重新放置,以便所有 Windchill Desktop Integration 客户端都能在后续连接操作中拾取该文件。或者,可以使用某些分隔符 (采用正确的 XML 转义) 提供多条信息。VBA 宏代码可以使用分隔符重新分割数据,并重新创建原始信息。
插入宏
1. 创建要插入的宏模块。
以下示例显示了如何创建宏模块以在 Microsoft Excel 中进行插入:
a. <Windchill>\codebase\com\ptc\windchill\enterprise\nativeapp\msoi\client\custom 下创建名为 "Excel" 的新文件夹。
b. 在其下创建 Module1.bas,并将以下代码粘贴到该文件中:
Sub Macro1(sUsername As String)
MsgBox("Hello " & sUsername & "! This is a macro alert.")
End Sub
* 
Windchill Desktop Integration 客户端会在服务器的后续连接操作中自动拾取所有模块。
2. 将宏模块导入 Microsoft Office 中。
将宏模块导入 Microsoft Office 时需要对服务器上的 wtCustomActions.xml 文件进行更改。以下示例显示了导入模块操作:
<action method="import_module" type="CLIENT">
<defaultdata key="module_path">custom\Excel\Module1.bas</defaultdata>
</action>
* 
如果 module path 参数的值不是绝对路径,则其值应为自定义文件夹的相对路径。
* 
根据所述 Microsoft Office 应用程序,将模块导入到不同的文件和模板中。例如,Microsoft Word 通常会导入到 Normal.dot* 模板中。Excel 会直接导入到打开的工作簿中。可通过使用 VBA 编辑器 (快捷方式 Alt + F11) 来确认位置。
移除宏
要在运行 Microsoft Office 文档后移除宏,请使用以下 action 配置:
<action method="remove_module" type="CLIENT">
<defaultdata key="module_name">Module1</defaultdata>
</action>
module_name 键值应与 VBA 编辑器 (Alt + F11) 中显示的模块名称相匹配。