Excel VBA XML形式でデータを出力する

スポンサーリンク

Export【エキスポート】メソッド

XML形式でデータを出力するには、XmlMap【エックスエルマップ】オブジェクトのExport【エクスポート】メソッドを使用します。

オブジェクトは、XMLスキーマとブックの対応付けを表すXmlMap【エックスエムエルマップ】オブジェクトを指定しXML形式に変換されたデータは、引数URLに指定されたファイルに出力されます。

また、Export【エクスポート】メソッドは、その出力結果をXlXmlExportResult列挙型の定数で返します。

XlXmlExportResult列挙型の定数
定数内容
xlXmlExportSuccess0XML形式で正常に出力されました。
xlXmlExportValidationFailed1XML データの内容が指定された
XMLスキーマ の定義と一致していません。

Export【エキスポート】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Export( Url, Overwrite )

  • オブジェクト(必須)
    Workbook【ワークブック】オブジェクトのXmlMaps【エックスエムエルマップス】プロパティでXmlMap【エックスマップ】オブジェクトを取得して指定します。
  • Url【ユーアールエル】(必須)
    XML形式のデータを出力するファイル名を指定します。パスを含めて指定することができます。
  • Overwrite【オーバーライト】(省略可)
    出力先に同じ名前のファイルが存在したときの保存方法を設定します。

    設定値内容
    True上書き保存します。
    False上書き保存しません。(既定値)

    ※引数Overwrite【オーバーライト】にFalseを指定、または省略した場合
    出力先に同じ名前のファイルが存在しているとエラーが発生します。


XML形式でデータを出力するコードと解説

Sub XML形式出力()
Dim myxmlmap As XmlMap
Set myxmlmap = ActiveWorkbook.XmlMaps.Add _
    (Schema:=ThisWorkbook.Path & "¥A事業商品.xsd")
With ActiveSheet.ListObjects("テーブル1")
     .ListColumns(1).XPath.SetValue Map:=myxmlmap, _
        XPath:="/A事業/商品/商品名", Repeating:=True
     .ListColumns(2).XPath.SetValue Map:=myxmlmap, _
        XPath:="/A事業/商品/価格", Repeating:=True
End With
myxmlmap.Name = "A事業商品XmlMap"

Dim 出力結果 As XlXmlExportResult
出力結果 = ActiveWorkbook.XmlMaps("A事業商品XmlMap").Export _
      (Url:=ThisWorkbook.Path & "¥A事業商品.xml", Overwrite:=True)
If 出力結果 = xlXmlExportSuccess Then
       MsgBox ThisWorkbook.Path & "に正常に出力されました。"
ElseIf 出力結果 = xlXmlExportValidationFailed Then
       MsgBox "データの内容がXMLスキーマの定義と一致しません。"
End If
End Sub
1行目~11行目のコードの解説は「ブックにXMLスキーマを追加して要素を対応付ける」を
ご覧ください。


13行目【Dim 出力結果 As XlXmlExportResult】
Export【エクスポート】メソッドで出力したXML形式ファイルの出力結果を格納する変数「出力結果」を出力結果の定数を表すXlXmlExportResult型で宣言します。


14行目~15行目【出力結果 = ActiveWorkbook.XmlMaps(“A事業商品XmlMap”).Export _
(Url:=ThisWorkbook.Path & “¥A事業商品.xml”, Overwrite:=True)】

Workbook【ワークブック】オブジェクトのXmlMaps【エックスエムエルマップス】プロパティで、ブックとの対応付けが済んだXMLスキーマである「A事業商品XmlMap」を表す、XmlMapオブジェクトのExport【エクスポート】メソッドを使用してXML形式のデータを出力します。
ここで使用されているXMLスキーマは「XMLスキーマを作成する」をご覧ください。引数Url【ユーアールエル】には、出力するXML形式ファイルの出力先を設定します。出力先は、thisWorkbook.Pathでこのコードが記述されたブックと同じ場所を示し、拡張子は「xml」に設定します。
引数Overwrite【オーバーライト】は出力先に同じファイルがあった場合、上書き保存をするTrueを設定します。そして、Export【エクスポート】メソッドの戻り値である出力結果を変数「出力結果」に代入します。


16行目~17行目【If 出力結果 = xlXmlExportSuccess Then
MsgBox ThisWorkbook.Path & “に正常に出力されました。”】

If【イフ】ステートメントを使用して条件分岐を行います。XML形式ファイルの出力結果が格納されている変数「出力結果」が「xlXmlExportSuccess」だったとき、つまりファイルが正常に出力されたときを定義して条件が成立した場合は17行目のMsgBox関数でメッセージを出力します。


18行目~19行目【ElseIf 出力結果 = xlXmlExportValidationFailed Then
MsgBox “データの内容がXMLスキーマの定義と一致しません。”】

ElseIf【エルズイフ】ステートメントでもう一つの条件式を設定します。変数「出力結果」が「xlXmlExportValidationFailed」のときつまり、データの内容がXMLスキーマの定義の一致していない場合、19行目のMsgBox関数でメッセージを出力します。


実行結果


ExportXml【エクスポートエックスエムエル】メソッド

XML形式のデータを文字列型の変数に出力するには、XmlMap【エックスエムエルマップ】オブジェクトのExportXml【エクスポートエックスエムエル】メソッドを使用します。

Export【エクスポート】とメソッドと同じでExportXml【エクスポートエックスエムエル】メソッドは、その出力結果をXlXmlExportResult列挙型の定数で返します。

XlXmlExportResult列挙型の定数
定数内容
xlXmlExportSuccess0XML形式で正常に出力されました。
xlXmlExportValidationFailed1XML データの内容が指定された
XMLスキーマ の定義と一致していません。

ExportXml【エクスポートエックスエムエル】メソッドの書式と設定値(引数)の説明

オブジェクト.ExportXml( Data )

  • オブジェクト(必須)
    Workbook【ワークブック】オブジェクトのXmlMaps【エックスエムエルマップス】プロパティでXmlMap【エックスマップ】オブジェクトを取得して指定します。
  • Data【データ】(必須)
    データのエクスポート先となる変数を指定します。

XML形式のデータを文字列型の変数に出力して
メッセージボックスに表示するコード例

Sub 変数出力()
Dim 出力 As XlXmlExportResult
Dim データ As String
出力 = ActiveWorkbook.XmlMaps("A事業商品XmlMap").ExportXml(データ)
If 出力 = xlXmlExportSuccess Then
       MsgBox データ
ElseIf 出力 = xlXmlExportValidationFailed Then
       MsgBox "データの内容がXMLスキーマの定義と一致しません。"
End If
End Sub

実行結果


以上で、XML形式でデータを出力する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告