【VBA】XMLスプレッドシートとして保存/開く

こんにちは、Ryoです。
Excelを扱っている中で、用途によってはデータをXMLにしたいこともあるかと思います。その場合はスプレッドシート形式として保存するのですが、VBAでもSaveAsメソッドを使用してXMLスプレッドシートとしての保存やOpenXMLメソッドを利用してXMLデータファイルを開くことができますので、今回はその内容について書いていきます。



1.サンプル概要

先ずXMLスプレッドシートとしての保存ですが、サンプルとして簡単な表を作成し、Sheet名を「Sample_Sheet」としています。

このSample_SheetをXMLスプレッドシートとして保存します。実行後はファイル名表記が「Sample_Spreadsheet.xml」になります。

XMLスプレッドシート形式で保存しましたので、メモ帳などのテキストエディタで編集することができます。下の画像は保存したファイルをメモ帳で開いたものです。

XMLスプレッドシートを開く場合は先程保存したファイル「Sample_Spreadsheet.xml」をOpenXMLメソッドで指定して開きますので、この辺りは後述のサンプルコードで説明します。

以上が概要になります。

2.サンプルコード

◆XMLスプレッドシートとして保存

Sub Sample1()

'***XMLスプレッドシートとして保存***

 'Sheeet名「Sample_Sheet」をXMLスプレッドシートとして保存
 Worksheets("Sample_Sheet").SaveAs Filename:=ThisWorkbook.Path _
 & "\Sample_Spreadsheet.xml", FileFormat:=xlXMLSpreadsheet
 
End Sub

XMLスプレッドシートとして保存するにはSaveAsメソッドを使用します。

構文:

Object.SaveAs(FileName,FileFormat,Password,WriteResPassword,
ReadOnlyRecommended,CreateBackup,AddToMru,TextCodepage,
TextVisualLayout,Local)

引数がかなりあって構文だけを見ると判り難いかもしれませんが、ここで使用するのはFileNameとFileFormatだけでOKです。

FileNameには保存するファイル名を指定しますので、Filename:=ThisWorkbook.Path & “\Sample_Spreadsheet.xml”とし、FileFormatにはXMLスプレッドシートとして保存する為にFileFormat:=xlXMLSpreadsheetとしています。

このサンプルコードを実行すれば、実行元の保存先と同じ場所にXMLスプレッドシートとして保存されます。

◆XMLスプレッドシートを開く

Sub Sample2()

'***XMLスプレッドシートを開く***

  '「Sample_Spreadsheet.xml」を開く
 Workbooks.OpenXML Filename:=ThisWorkbook.Path _
 & "\Sample_Spreadsheet.xml"

End Sub

XMLスプレッドシートを開く場合はOpenXMLメソッドを利用します。

構文:Object.OpenXML(FileName,Stylesheets,LoadOption)

ここでは開くだけなので、引数のFileNameのみ指定しています。先程保存したXMLスプレッドシートを開くので、Filename:=ThisWorkbook.Path & “\Sample_Spreadsheet.xml”とすればOKです。

Excelから開くことはできますが、XMLファイルをExcelで編集する場合は以下の機能が制限されますのでご留意ください。

機能 制限内容
分析機能のトレース矢印 保持されない
グラフ、その他のグラフィックオブジェクト 保持されない
グラフ/マクロ/ダイアログシート 保持されない
ユーザー設定のビュー 保持されない
データの統合 参照は保持されない
描画オブジェクト順(重ね順) 保持されない
リスト リスト機能は失われるが、データは保持される
アウトライン 保持されない
パスワード設定 パスワード保護されたワークシート、及びブックのデータは保持されない
シナリオ 保持されない
共有ブック情報 保持されない
小計 数値と計算は保持されるが、グループ機能/アウトライン機能は保持されない
ユーザー定義関数の項目 保持されない
VBAプロジェクト 保持されない

3.まとめ

ExcelデータをXMLデータとしたい場合に有効なXMLスプレッドシートですが、保存や開くこと自体は記述も少なく簡単にできますので、知っておくと今後活用の幅が広がるものと思います。




後は制限される機能(保持されない)もあるということを覚えておくと、活用する際に役立ちますので、機会があればご検討くださいませ。

以上、【VBA】XMLスプレッドシートとして保存/開く方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

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

楽天トラベル

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク

楽天トラベル