end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

Office Web Services Toolkit でvbaからweb api(soap)を利用

先日のエントリでは、MSXML2.XMLHTTP によるweb apiの利用方法を紹介しましたが、今回はOffice Web Services Toolkit でvbaからsoapを利用する方法を紹介します。

http://d.hatena.ne.jp/end0tknr/20081115/1226755041

Office Web Services Toolkitとは

Office Web Services Toolkitとは、Visual Basic Editor に XML Web サービスを扱う機能を追加してくれるものです。
現在、OfficeXPにはOffice XP Web Services Toolkit、Office2003にはOffice 2003 Web Services Toolkitが提供されていますが、Office2007では提供されていないようです。

http://msdn.microsoft.com/ja-jp/library/aa192537.aspx

Office Web Services Toolkitによるsoap client作成

先程のurlからダウンロードしinstallすると、Visual Basic Editorのメニューに「Web Service References」が追加されます。この「Web Service References」から表示されるダイアログの「Web サービス URL」にwsdlを入力すると、soap clientクラスが生成されます。


ユーザ登録が必要ですが、インターネット上にあるwsdlには次のようなものがあります。
http://dev.geoap.jp/GeOAP_Trial/GeOAP_Trial.asmx?wsdl

後は、次のようなコードを書けば、vbasoap web serviceとの連携を実現できます。
※尚、以下のコードは、dev.geoap.jp用ではありません。

Sub soapTest()
    Dim ExampleVar As New clsws_SoapService 'Soap Client
    Dim results As Variant '結果はVariant型で受ける

    'soap methodの呼び出し
    'resultsの中身は、文字列のリスト    
    results = ExampleVar.wsm_getAllElement("HOGEHOGE", "Unit")

    'resultsのdebug write    
    If Not IsNull(results) Then
        For Each result In results
            MsgBox result
        Next result
    End If
End Sub

soap serviceに対する認証

例えば、次のような方法もあるようです。
http://www.geoap.jp/service/tech/tech3_2.htm

個人的には、soapはあんまり...

soapサービスを利用する場合、server側ではaxis等によるsoapサーバやwsdl、client側でもOffice Web Services Toolkitが必要なので、先日のMSXML2.XMLHTTPの方がお手軽な気がします。