是否可以将 OfficeJS 命令按钮放置到像 .xlam 文件一样构建的自定义 VBA 插件面板?
* 我仍然希望混合使用 VBA 和 OfficeJS
这是未经测试的,但我相信沿着这些路线的东西可以完成这项工作:
使用CustomXMLPart.dataNodeReplaced
事件:
function addNodeReplacedEvent() {
Office.context.document.customXmlParts.getByIdAsync("vbaJSBridge", function (result) {
var xmlPart = result.value;
xmlPart.addHandlerAsync(Office.EventType.DataNodeReplaced, function (eventArgs) {
// do stuff with xmlPart
// here you should be able to receive information sent from VBA,
// and return any data necessary.
});
});
}
Run Code Online (Sandbox Code Playgroud)
在 VBA 中使用:
Dim part As CustomXMLPart
' Returns a custom xml part by its ID:
Set part= ActiveDocument.CustomXMLParts.SelectByID("vbaJSBridge")
part.LoadXML("<data id="vbaJSBridge">some data</data>")
Run Code Online (Sandbox Code Playgroud)
如前所述,我不确定这是否完全有效,但这是一种很好的(有点 hacky)完成这项工作的方法。或者,您可以使用 VBA 设置 HTTP 服务器,您可以将 HTTP 请求发送到 JavaScript。为此,您必须使用 Mswsock.dll 并调用accept方法,(我认为)。
归档时间: |
|
查看次数: |
1415 次 |
最近记录: |