« 弁理士手帳 | トップページ | たのしいXML »

VBAでXMLを扱う

XML というと、色々と複雑な構造が扱える便利なデータ格納形式です。これをWORD VBAで取り扱う方法を試してみましたので、備忘録に記載します。

 まず、WORD を起動して「ツール」メニューから「マクロ」を選択して、適当な名称 "test" を入力して「作成」ボタンを押すと、Microsoft Visual Basic 環境が起動します。そう、WORD のVBAマクロは、実はVisual Basic が裏で走っていたのですね。

 このVisual Basic の「ツール」メニューの参照設定を選択し、”Microsoft XML, v6.0”を選択します。XMLのクラスライブラリは後付で出来たので、こんな風に追加しなければならないようですね。これで、プログラム側は準備がととのいました。

 サンプルのXML ファイルを作成します。Yahoo! の形態素解析のサンプルあたりがいいかな。

<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn: yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp
http://jlp.yahooapis.jp/MAService/V1/parseResponse.xsd">
  <ma_result>
    <total_count>9</total_count>
    <filtered_count>9</filtered_count>
    <word_list>
      <word>
      <surface>庭</surface>
      <reading>にわ</reading>
      <pos>名詞</pos>
      <baseform>庭</baseform>
      </word>
      <word>
      <surface>に</surface>
      <reading>に</reading>
      <pos>助詞</pos>
      <baseform>に</baseform>
      </word>
      <word>
      <surface>は</surface>
      <reading>は</reading>
      <pos>助詞</pos>
      <baseform>は</baseform>
      </word>
      <word>
      <surface>二</surface>
      <reading>2</reading>
      <pos>名詞</pos>
      <baseform>2</baseform>
      </word>
      <word>
      <surface>羽</surface>
      <reading>わ</reading>
      <pos>名詞</pos>
      <baseform>羽</baseform>
      </word>
      <word>
      <surface>ニワトリ</surface>
      <reading>にわとり</reading>
      <pos>名詞</pos>
      <baseform>ニワトリ</baseform>
      </word>
      <word>
      <surface>が</surface>
      <reading>が</reading>
      <pos>助詞</pos>
      <baseform>が</baseform>
      </word>
      <word>
      <surface>いる</surface>
      <reading>いる</reading>
      <pos>動詞</pos>
      <baseform>いる</baseform>
      </word>
      <word>
      <surface>。</surface>
      <reading>。</reading>
      <pos>特殊</pos>
      <baseform>。</baseform>
      </word>
    </word_list>
  </ma_result>
  <uniq_result>
    <total_count>9</total_count>
    <filtered_count>5</filtered_count>
    <word_list>
      <word>
      <surface>庭</surface>
      <reading>にわ</reading>
      <pos>名詞</pos>
      <baseform>庭</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>二</surface>
      <reading>2</reading>
      <pos>名詞</pos>
      <baseform>2</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>羽</surface>
      <reading>わ</reading>
      <pos>名詞</pos>
      <baseform>羽</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>ニワトリ</surface>
      <reading>にわとり</reading>
      <pos>名詞</pos>
      <baseform>ニワトリ</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>いる</surface>
      <reading>いる</reading>
      <pos>動詞</pos>
      <baseform>いる</baseform>
      <count>1</count>
      </word>
    </word_list>
  </uniq_result>
</ResultSet>

これををメモ帳に貼り付けて UTF-8 の文字コードで "sample.xml" の名前で保存します。
次に、Visual Basic Editor に、このサンプルコードを貼り付けます。
参考にしたのは、以下の掲示板です。
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200605/06050060.txt

Sub test()
'
' test Macro
' 作成日 2009/12/15 作成者 izumi
'
Dim D As MSXML2.DOMDocument
Set D = New MSXML2.DOMDocument
D.async = False '同期読み込み

If D.Load(ThisDocument.Path & "\SAMPLE.XML") Then
    MsgBox "読み込み成功"

  'ルート要素ノードの名前
  Debug.Print D.documentElement.nodeName
  'ルート要素ノードが持つ属性の数
  Debug.Print D.documentElement.Attributes.Length
  'ルート要素ノードの0番目の属性名
  Debug.Print D.documentElement.Attributes(0).nodeName
  'ルート要素ノードの0番目の属性値
  Debug.Print D.documentElement.Attributes(0).nodeValue
   
Else
    MsgBox ThisDocument.Path & "\SAMPLE.XML"
    MsgBox "読み込み失敗"
    Debug.Print D.parseError.errorCode
    Debug.Print D.parseError.reason
    Debug.Print D.parseError.srcText
    Debug.Print D.parseError.Line
    Debug.Print D.parseError.linepos
End If

End Sub

これを動かすと、なんとかうまく「読み込み成功」のメッセージボックスが表示され、Visual Basic のイミディエイト・ウインドウに Debug.Print の出力が表示されました。

これだけでは何をしているのか、また何を作ろうとしているのかわからないと思います。そのうち詳しい内容をご説明できると思いますので、当該ブログを引き続きご覧になっていただければとおもいます。

|

« 弁理士手帳 | トップページ | たのしいXML »

「パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/110295/47031934

この記事へのトラックバック一覧です: VBAでXMLを扱う:

« 弁理士手帳 | トップページ | たのしいXML »