Excel VBAのMSXML(Microsoft XML)ライブラリは、XMLデータの操作やWebサービスとの通信を行うための強力なツールです。MSXMLライブラリを使用することで、Excelから直接インターネット上のリソースにアクセスし、XMLデータの読み書きや解析を行うことができます。以下に、MSXMLライブラリの主要な機能と実用例を説明します。
主な機能
XMLHTTPオブジェクト
HTTPリクエストを送信し、サーバーからの応答を受け取るためのオブジェクト。Webサービスとの通信に使用されます。
DOMDocumentオブジェクト
XML文書を解析し、操作するためのオブジェクト。XMLデータの読み込み、操作、保存が可能です。
XSLTemplateオブジェクト
XSLTスタイルシートを使用してXML文書を変換するためのオブジェクト。
例題1: HTTPリクエストを送信してWebサービスからデータを取得
Microsoft XML ライブラリの参照設定
VBAエディタを開く:ExcelでAlt + F11
を押してVBAエディタを開きます。
照設定を開く:VBAエディタでツール
メニューをクリックし、参照設定
を選択します。
Microsoft XML ライブラリを選択:リストから「Microsoft XML, v6.0」にチェックを入れます。リストに表示されていない場合は、下にスクロールして探してください。
以下の例では、MSXMLライブラリを使用してHTTPリクエストを送信し、Webサービスからデータを取得してExcelシートに表示する方法を示します。
Sub GetDataFromWebService()
' MSXMLライブラリの参照設定が必要
' 参照設定: Microsoft XML, v6.0
Dim xmlHttp As MSXML2.XMLHTTP60
Dim url As String
url = "https://api.exchangerate-api.com/v4/latest/USD"
' XMLHTTPオブジェクトの作成
Set xmlHttp = New MSXML2.XMLHTTP60
' HTTPリクエストの送信
xmlHttp.Open "GET", url, False
xmlHttp.send
' サーバーの応答を取得
Dim response As String
response = xmlHttp.responseText
' 応答をメッセージボックスに表示
MsgBox response, vbInformation, "Webサービスからの応答"
' Excelシートにデータを表示
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1)
ws.Cells(1, 1).Value = response
' リソースの解放
Set xmlHttp = Nothing
End Sub
このコードでは、XMLHTTP
オブジェクトを使用してWebサービスから為替レートデータを取得し、その応答をメッセージボックスに表示し、Excelシートに書き込んでいます。
例題2: XMLデータの解析と操作
次に、MSXMLライブラリを使用してXMLデータを解析し、その内容をExcelシートに表示する方法を示します。
Sub ParseXMLData()
' MSXMLライブラリの参照設定が必要
' 参照設定: Microsoft XML, v6.0
Dim xmlDoc As MSXML2.DOMDocument60
Dim xmlNode As MSXML2.IXMLDOMNode
Dim xmlNodes As MSXML2.IXMLDOMNodeList
' XML文書の読み込み
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False
xmlDoc.Load ("C:\path\to\your\file.xml")
' ノードの取得
Set xmlNodes = xmlDoc.SelectNodes("//YourNodeName")
' Excelシートにデータを表示
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1)
Dim i As Integer
i = 1
For Each xmlNode In xmlNodes
ws.Cells(i, 1).Value = xmlNode.Text
i = i + 1
Next xmlNode
' リソースの解放
Set xmlDoc = Nothing
MsgBox "XMLデータの解析が完了しました。", vbInformation, "完了"
End Sub
このコードでは、DOMDocument
オブジェクトを使用してXMLファイルを読み込み、特定のノードの内容をExcelシートに表示しています。
例題3: XMLデータの作成と保存
以下の例では、MSXMLライブラリを使用して新しいXMLデータを作成し、ファイルに保存する方法を示します。
Sub CreateAndSaveXML()
' MSXMLライブラリの参照設定が必要
' 参照設定: Microsoft XML, v6.0
Dim xmlDoc As MSXML2.DOMDocument60
Dim root As MSXML2.IXMLDOMElement
Dim child As MSXML2.IXMLDOMElement
' 新しいXML文書の作成
Set xmlDoc = New MSXML2.DOMDocument60
' ルート要素の作成
Set root = xmlDoc.createElement("Root")
xmlDoc.appendChild root
' 子要素の作成
Set child = xmlDoc.createElement("Child")
child.Text = "Hello, XML!"
root.appendChild child
' XML文書の保存
xmlDoc.Save "C:\path\to\your\newfile.xml"
' リソースの解放
Set xmlDoc = Nothing
MsgBox "XMLデータの作成と保存が完了しました。", vbInformation, "完了"
End Sub
このコードでは、DOMDocument
オブジェクトを使用して新しいXML文書を作成し、指定したパスに保存しています。
エラー修正:ユーザー定義型は定義されていません
「ユーザー定義型は定義されていません」というエラーは、MSXML2.XMLHTTP60オブジェクトを認識できないことが原因です。これは、VBAで使用する前にMicrosoft XMLライブラリへの参照設定が適切に行われていないか、MSXML2.XMLHTTP60がシステムにインストールされていないためです。
参照設定の確認と修正
VBAでMSXMLライブラリを使用するためには、まず参照設定を行う必要があります。次の手順で確認と設定を行ってください。
- ExcelのVBAエディタを開きます (
Alt + F11
)。 - メニューから「ツール」 > 「参照設定」を選択します。
- 「Microsoft XML, v6.0」を探してチェックを入れます。
MSXML2.XMLHTTP60
が利用できるのは「Microsoft XML, v6.0」が正しくインストールされている場合です。
- OKを押して設定を保存します。
結論
MSXMLライブラリを使用することで、Excel VBAから直接XMLデータを操作し、Webサービスと通信することが可能です。XMLHTTP
オブジェクトを使用してWebサービスからデータを取得し、DOMDocument
オブジェクトを使用してXMLデータを解析、操作、保存できます。これらのツールを駆使することで、データの取得や管理が飛躍的に向上し、業務効率化に大いに貢献します。