From Evernote: |
[EXCELVBA]Web Service ToolkitによるVBA→Webサービス参照 |
Web Service Toolkit を使うと
ExcelVBA→Webサービスを参照できるようになります。
■実装方法
①Web Service Toolkitをダウンロード
②インストールが完了すると
Visual Basic Editorのメニューに「Web Service References」が追加されます。
この「Web Service References」から表示されるダイアログの「Web サービス URL」にwsdlを入力すると
soap clientクラスが生成されます!
※WSDL…Webサービスアドレス+"?wsdl"
(Webサービスのためのインターフェイス記述言語)
③クラスが出来ました。
Public Function wsm_ExecuteScalar(ByVal str_Sql As String) As String'*****************************************************************'http://*****/******/*******.asmx?wsdl から作成されたプロキシ関数です。'*****************************************************************'エラー処理On Error GoTo wsm_ExecuteScalarTrapwsm_ExecuteScalar = sc_WSCommon.ExecuteScalar(str_Sql)Exit Functionwsm_ExecuteScalarTrap:WSCommonErrorHandler "wsm_ExecuteScalar"End Function
'-----------------------------------------------------------------
②-2.このクラスを使った読み方はこんなコードとなります↓。
'-----------------------------------------------------------------
Private Sub CommandButton1_Click()On Error GoTo errhandDim SimeiC As LongSimeiC = ThisWorkbook.Sheets("Sheet1").Range("C3").ValueThisWorkbook.Sheets("sheet1").Range("E4") = ""Dim clsws_WSCommon As New clsws_WSCommon 'Soap ClientDim results As Stringresults = clsws_WSCommon.wsm_ExecuteScalar("SELECT 氏名 FROM T_個人情報 WHERE 氏名コード= '" & SimeiC & "'")ThisWorkbook.Sheets("sheet1").Range("E4") = resultsExit Suberrhand:MsgBox "Error #" + Err.Number + ": " + Err.DescriptionEnd Sub
'-----------------------------------------------------------------
②-3.ちなみに受け渡しがDataTable変数(.NET)のクラスの場合はどうなるか…'-----------------------------------------------------------------Public Sub wsm_AddDataTable2(ByRef any_Tbl As MSXML2.IXMLDOMNodeList, ByVal str_TableName As String, ByVal str_Sql As String)
'*****************************************************************
'http://*****/******/*******.asmx?wsdl から作成されたプロキシ サブルーチンです。'
'"any_Tbl" は XML として定義されています。XML 変数の実装に関する詳細については、
'Microsoft Office 2003 Web Services Toolkit 2.0 ヘルプの「複合型 : XML」を参照してください。
'*****************************************************************
'エラー処理
On Error GoTo wsm_AddDataTable2Trap
sc_WSCommon.AddDataTable2 any_Tbl, str_TableName, str_Sql
Exit Sub
wsm_AddDataTable2Trap:
WSCommonErrorHandler "wsm_AddDataTable2"
End Sub'-----------------------------------------------------------------②-4.DataTable変数は、IXMLDOMNodeListに変換されています。これは以下のように読みます'-----------------------------------------------------------------Private Sub CommandButton2_Click()
On Error GoTo errhand
Dim JigyobuC As Long
JigyobuC = ThisWorkbook.Sheets("Sheet1").Range("C6").Value
Dim clsws_WSCommon As New clsws_WSCommon
Dim strSQL As String
strSQL = "SELECT 部門コード,部門名 FROM V_部門 WHERE 事業部コード = '" & JigyobuC & "'"
Dim Nodes As MSXML2.IXMLDOMNodeList
clsws_WSCommon.wsm_AddDataTable2 Nodes, "test", strSQL
Dim y As Integer
y = 8
Dim xNode As MSXML2.IXMLDOMNode
For Each xNode In Nodes
Dim NodeList As MSXML2.IXMLDOMNodeList
Set NodeList = xNode.selectNodes("NewDataSet/test/部門名")
For Each obj In NodeList
'MsgBox obj.nodeName & " : " & obj.Text
Range("E" & y) = obj.Text
y = y + 1
Next
Next xNode
Exit Sub
errhand:
MsgBox "Error #" + Err.Number + ": " + Err.Description
End Sub'-----------------------------------------------------------------もはやXMLNodeの勉強。
■基礎知識!
Web Service ToolkitはWebサービスを使うためのローカルクラスを自動生成するツールに過ぎない。
あくまでSOAP ToolKit 3.0 を使って接続しているのがポイント。
(他の端末でもあらかじめSOAPToolkit3.0は入っている??みたいなのでインストール不要)
ちなみにインストールせずに自分でSOAPで読むコードを直接書いてもいいんだけど
どうも既存の[ツール]→[参照設定]→「Microsoft SOAP Type Library」では日本語が文字化けするので
SOAP Toolkit 3.0 ダウンロードついでにOffiece Web Service をインストールして
自動生成することにした訳です。
0 件のコメント:
コメントを投稿