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形式でデータを出力する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク