RunMacro
RunMacro 在线打开的PageOffice文档中执行已录制的宏指令或者新编写的宏指令(VBA代码)。仅限Windows客户端。
语法:
pageofficectrl.RunMacro( macroName, macroBody, macroParam);//运行文档中的无返回值的宏命令.
let strValue = pageofficectrl.RunMacro( macroName, macroBody, macroParam);//运行有返回值的宏命令.
| 参数 | 描述 |
|---|---|
| macroName | 字符串类型,表示宏指令名称。如:"myfunc" |
| macroBody | 字符串类型,表示要执行的宏指令代码。 |
| macroParam | 字符串类型,只能传递一个参数,不能为空字符串,可选。 |
[!tip]
当参数 macroBody 为空字符串表示调用文件中自身的宏;如果传递该参数,就直接执行该参数中的宏指令。这里的宏指令指的是完整的VBA函数字符串,必须包含函数的开始和结束,并且函数的名字要和macroName参数指定的函数名字完全相同。
-
[!note]
- 当参数macroBody中有多句宏指令代码时,请把每句代码单独放一行(VBA的要求),注意回车换行。
- v6.5.1.2之前的版本不支持调用有参数的宏函数;v6.5.1.2及以上版本的宏函数,可以支持传递1个参数。
示例:
执行有返回值宏命令。例如,在页面上放一个普通的按钮“Button”,给其添加一个“onclick”事件,命名为“TestRunMacro”,点击按钮执行Js函数TestRunMacro(), JS代码如下:
// v6.5.1.2之前的版本不支持调用有参数的宏函数
function TestRunMacro(){
var value = pageofficectrl.RunMacro("myFunc1", 'Function myFunc1() \r\n myFunc1 = "123" \r\n End Function');
alert(value);
}
// v6.5.1.2及以上版本的宏函数,可以支持传递1个参数
function TestMacro1() {
let vbaStr = `Sub 宏1(params)
MsgBox params
End Sub`;
// 执行VBA宏
// @param {string} macroName - 宏名称(字符串类型,不能为空,必选)
// @param {string} macroBody - 宏函数体(字符串类型,必选,空字符串表示调用文件中自身的宏)
// @param {string} [macroParam] - 宏参数(字符串类型,只能传递一个参数,不能为空字符串,可选。)
pageofficectrl.RunMacro("宏1", vbaStr, "abc");
}