エクセルリストを瞬時にXMLへ変換するマクロ:活用ガイド
エクセルデータを瞬時にXML形式でクリップボードにコピーするマクロをご紹介します。
このマクロが実現すること
このマクロは、エクセルの指定した範囲のデータを簡単にXML形式に変換し、クリップボードにコピーすることが可能にします。これにより、データの共有や他のプログラムでの利用が非常に簡単になります。
それをWeb上へアップロードすることで別の場所から再利用することができます。
コード挿入
下記のコードをVBAエディタから標準モジュールにコピー&ペーストしてマクロをセットアップしてください。「ConvertRangeToXMLAndCopyToClipboard」というマクロが作成されます。
Sub ConvertRangeToXMLAndCopyToClipboard()
On Error Resume Next
' Input 1: Get Dataset name
Dim datasetName As String
datasetName = InputBox("データセットの名前を入力してください:")
If datasetName = "" Then Exit Sub
' Input 2: Get Row Meaning
Dim rowMeaning As String
rowMeaning = InputBox("行の意味を入力してください:")
If rowMeaning = "" Then Exit Sub
' Input 3: Get Range
Dim rng As Range
Set rng = Application.InputBox("リストの範囲を選択してください:", Type:=8)
If rng Is Nothing Then Exit Sub
' Check for merged cells
Dim cell As Range
For Each cell In rng
If cell.MergeCells Then
MsgBox "セルの結合を解除してください", vbExclamation
Exit Sub
End If
Next cell
' Generate XML
Dim xml As String
xml = "<" & datasetName & ">" & vbCrLf
Dim i As Long, j As Long
For i = 2 To rng.Rows.Count
xml = xml & " <" & rowMeaning & ">" & vbCrLf
For j = 1 To rng.Columns.Count
xml = xml & " <" & rng.Cells(1, j).Value & ">" & rng.Cells(i, j).Value & "</" & rng.Cells(1, j).Value & ">" & vbCrLf
Next j
xml = xml & " </" & rowMeaning & ">" & vbCrLf
Next i
xml = xml & "</" & datasetName & ">"
' Copy to Clipboard
Dim MSForms_DataObject As Object
Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
MSForms_DataObject.SetText xml
MSForms_DataObject.PutInClipboard
MsgBox "XMLがクリップボードにコピーされました", vbInformation
End Subマクロの実行時の操作
マクロを実行する際には、以下の手順を行います:
- リストの準備

- 「ConvertRangeToXMLAndCopyToClipboard」マクロの実行

- データセットの名前を入力

- 行の意味を定義(XMLのタグ名として使用)

- エクセルデータの範囲を選択

以上の情報を入力した後、マクロが自動でXMLデータを生成し、それをクリップボードにコピーします。
テキストエディタに貼り付けるなどをして再利用してください(保存時の拡張子はxmlを推奨)。

マクロ実行後の確認事項
マクロを実行した後、XMLデータがクリップボードにコピーされるので、それを任意のテキストエディタに貼り付けて確認することができます。これで、データの共有や他のプログラムとの連携が簡単に行えます。
Web上で公開すればオンライン上で再利用することが可能です。
使用時の注意点
このマクロを使用する際には、いくつかの注意点があります:
- 範囲に結合セルがあるとエラーが発生するので、結合セルは事前に解除しておく必要があります。
- データ範囲の最初の行はXMLの要素名として使用されるため、適切な名前を使用することが重要です。
以上の点を注意していただければ、スムーズにマクロを利用できます。
このマクロを利用することで、エクセルデータのXML変換作業が劇的に効率化され、作業時間の短縮が期待できます。ぜひ一度お試し下さい。
コメント