スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Excel で XML-RPC (by XMLHTTPRequest)

CATEGORYVBA
XMLHTTPRequest って、同一のドメイン内じゃないとセキュリティのエラーになるから、Excel で使おうなんて思ったことなかった。
でも、使えるんだねえ、Excel でも。
ついでなので、XML-RPC を試してみた。

サービスは 郵便専門ネット。XML-RPC の仕様は こちら
使ってみたのは、yubin.fetchAddressByPostcode (郵便番号から住所を取得する) 。


Sub fetchAddressByPostcode(postcode)

Dim xhr As XMLHTTP
Dim xml As DOMDocument

' Remote Procedure Call by XMLHTTPRequest

URL = "http://yubin.senmon.net/service/xmlrpc/"

Set xhr = New XMLHTTP
xhr.Open "POST", URL, False

xhr.setRequestHeader "Method", "POST " & URL & " HTTP/1.1"
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

param = "<?xml version='1.0' encoding='utf-8'?>" & vbNewLine & _
"<methodCall>" & _
"<methodName>yubin.fetchAddressByPostcode</methodName>" & _
"<params><param><value><string>" & postcode & "</string></value></param></params>" & _
"</methodCall>"

xhr.send (param)


Set xml = xhr.responseXML

' 取得した結果をシートに展開
Range("A:B").ClearContents
Set Members = xml.getElementsByTagName("member")

r = 1
For i = 0 To Members.Length - 1
Set node = Members.Item(i).FirstChild
Cells(r, 1) = node.Text
Cells(r, 2).NumberFormatLocal = "@"
Cells(r, 2) = node.nextSibling.Text
r = r + 1
Next


Set xhr = Nothing
Set xml = Nothing

End Sub

Sub test()
Call fetchAddressByPostcode("0100011")
End Sub



実行するためには、Visual Basic Editor で、「ツール」→「参照設定」で、Microsoft XML, v5.0 をライブラリに追加することが必要。

XML-RPC のタグの雰囲気は、Wiki が参考になるかも。

普段、VBA は必要に迫られないと積極的に使う気がしないんだが、こういうのだと、ちょっと楽しいかな。

でも、やっぱり馴染めん。
ソースコードを打ち込んでるよりも、google の検索ワードを打ち込んでるほうが多い。

  • 文字列の結合は &
  • 継続行の指定で _
  • マルチステートメントは : で区切る
  • Set やら Dim やら
  • 引数の指定に、括弧をつけるとエラーになったり
  • If o = Nothing じゃなくて、If o Is Nothing
  • Collection.Add には Key が指定できるのに、Key を指定して取得ができない
  • 配列は 0 始まりでも 1 始まりでもなく... (Pascal と一緒だ)
  • 配列の動的割り当て ReDim
  • Dictionary に、同じキーで二度突っ込むとエラーなんだ
  • 単語の頭を大文字に変換する Visual Basic Editor
  • Cells だったり Range だったり
  • Exit XXX や End XXX


昔は basic もやってたから、Next とか、同値判定が = (== じゃなくて) とかはあんまり気にならないけど、perl の次に習得したくない言語だ。

# 逆に言うと、習得したくないけど、使わざるを得ない、ということなんだが
関連記事
スポンサーサイト

Excel XMLHTTPRequest XML-RPC

0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。