« Vodafone 3G | メイン | Wiki »

2005年12月14日

仕事の周辺 » XML

エクセルからWebサービスにアクセス その2

データセットをバーンと投げるWebサービスをエクセル側でテーブルに復元するマクロ。
VBはもちろん、VBA、エクセルマクロも初めてなので、とんでもないことをしてるかも。
結構大変でした。ReDemを知らなかったし(^^;)。
エクセルからもっと簡単にWebサービスにリンクできてもよさそうなのですが、本当にこうするしかないのかなぁ。

Sub GetDS()
'Create WebService Instance
Dim obj As New clsws_MyService
Dim itemNames As IXMLDOMNodeList '項目名
Dim dataNodes As IXMLDOMNodeList 'データ部分
Dim iName() As String
'タイトル部分書き出し
'まず、ユニークなsequenceを抜き出し。ややこいNSは無視
Set itemNames = obj.wsm_ReturnDS().Item(0).selectNodes("//*[local-name() ='sequence']").Item(0).childNodes

ReDim iName(itemNames.Length)

For i = 0 To itemNames.Length - 1
iName(i) = itemNames.Item(i).Attributes.getNamedItem("name").nodeValue
Cells(1, i + 1) = itemNames.Item(i).Attributes.getNamedItem("name").nodeValue
Next


'データ部分書き出し
Set dataNodes = obj.wsm_ReturnDS().Item(1).selectNodes("//Table")

For i = 0 To dataNodes.Length - 1
For j = 0 To itemNames.Length - 1

Dim nName As String
nName = iName(j)
Cells(i + 2, j + 1) = dataNodes.Item(i).selectSingleNode(nName).Text
Next
Next

End Sub

投稿者 idic : 2005年12月14日 19:52

コメント

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?