2017-07-18 15 views

答えて

2

ありませんを混合する希望を持って、あなたは、アドインをウェブからVBAマクロまたはCOMアドインと対話することはできません。 Webアドインは、サンドボックス化されているため、OSやインストールされたプログラムと通信できないという点で、Webページと似ています(少なくともヘルパーやブローカーのアプリケーション/ライブラリなしでは)。

+0

OK。私はOfficeJs VBAから実行できないものを見ています。そして、それはVBA事務所からの実行です.Js? –

+0

正しいですが、VBAはWebアドインと通信できないか、OfficeまたはグラフAPIのJavaScriptを使用できません –

+0

あなたの答えは少し誤解を招くようです...私は[ここ](http://rockthecode.io/blog/javascript-and- excel /)では、OfficeJSを使用して範囲の値を読み取り編集することができます。したがって、JSとVBAの間でメッセージリレーを設定することが可能です。カスタムXMLパーツを設定するための[setXml](https://dev.office.com/reference/add-ins/excel/customxmlpart)関数も存在します。これは、VBAとJSの間の通信にも使用される可能性があります。 – Sancarn

0

これはテストされていないですが、私はこれらの線に沿って何かが仕事をすると信じて:

CustomXMLPart.dataNodeReplaced eventを使用します。

VBAの使用では
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. 
     }); 
    }); 
} 

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>") 

としては、私は言いましたこれが完全に機能するかどうかは不明ですが、仕事をするのはちょっとした方法です。また、HTTPリクエストをJavaScript経由で送信できるVBAを使用してHTTPサーバーを設定することもできます。これを行うには、Mswsock.dllを使用してacceptメソッドを呼び出す必要があります(私はそうだと思います)。

関連する問題