
はじめまして。
XMLファイルに含まれたデータの中から、特定の条件のデータのみを抽出するプログラムを作りたいと思っております。
XMLファイルの中身は
<p name="test">あいうえお</p>
<p name="test2">かきくけこ</p>
<p name="test3">さしすせそ</p>
…
のようなデータが2~300以上あり、その中から、NAMEが"test"のものだけを抽出するプログラムなのですが、ExcelのVBAで可能でしょうか?
ご教授頂ければ幸いです。よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
XMLの書かれたテキストファイルからExcelのワークシートに抽出するものとして作ってみました。
ExcelのAdvancedFilter(フィルタオプションの設定)を使ったものとVBAのLike演算子で1行ずつ判定するものの2種類です。
プロシージャは標準モジュールに置いてください。
XMLの書かれたテキストファイルは仮に"C:\XmlFile.xml"としましたので質問者様の実情に合わせて書き換えるようお願いいたします。
ご質問やご希望にあわないところなどありましたら補足いただければ、と思います。
1.AdvancedFilter使用
マクロのあるブックに"抽出"と"条件"の2枚のシートを用意し、
"条件"は、A1を空文字列以外の何らかの文字列、
A2をマッチングパターン(たとえば「'=<p name="test">*」)としておく。
Sub XMLextract1()
Workbooks.OpenText "C:\XmlFile.xml" 'XMLファイル
Selection.EntireRow.Insert
Selection.Value = ThisWorkbook.Worksheets("条件").Range("A1").Value
ThisWorkbook.Worksheets("抽出").Range("A:A").ClearContents
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:= _
ThisWorkbook.Worksheets("条件").Range("A1:A2"), _
CopyToRange:=ThisWorkbook.Worksheets("抽出").Range("A1")
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Worksheets("抽出").Activate
Range("1:1").Delete
End Sub
2.Like演算子使用
マクロのあるブックにシート"抽出"を用意しておく。
Sub XMLextract2()
Dim FSO, XmlFile, MatchPattern, ExTop, ExRow, Line1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set XmlFile = FSO.OpenTextFile("C:\XmlFile.xml") 'XMLファイル
Set ExTop = ThisWorkbook.Worksheets("抽出").Range("A1")
ExRow = 1
MatchPattern = "<p name=""test"">*" 'マッチングパターンをここに設定
ExTop.EntireColumn.ClearContents
Application.ScreenUpdating = False
Do While XmlFile.AtEndOfLine = False
Line1 = XmlFile.ReadLine
If Line1 Like MatchPattern Then
ExTop.Cells(ExRow, 1).Value = Line1
ExRow = ExRow + 1
End If
Loop
Application.ScreenUpdating = True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESS 「パラメータの入力」...
-
Access テーブルを分割してエク...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESS クエリの抽出条件を動的...
-
accessの日付フィールドから前...
-
PCゲームから音声ファイルを抽...
-
VBAでアクセスのクリエの抽出条...
-
アクセスの抽出条件設定について
-
ACCESSの時間帯の抽出について
-
オプションボタンを使って抽出
-
ACCESS クエリで”1”でないもの...
-
クエリの進行状況を知りたい。
-
ExcelのVBAで、XMLファイルのデ...
-
Accessクエリーでチェックボッ...
-
access クエリの抽出条件を入れ...
-
アクセス・クエリの抽出条件(...
-
エクセル2010の統計作業(フィ...
-
Access 2003 iif [日付フィール...
-
Accessで「式で型が一致しません...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
ACCESS 「パラメータの入力」...
-
PCゲームから音声ファイルを抽...
-
Accessで「式で型が一致しません...
-
accessの日付フィールドから前...
-
アクセス・クエリの抽出条件(...
-
エクセルのマクロで検索・抽出...
-
元データから連続5日以上だった...
-
Accessクエリーでチェックボッ...
-
ACCESS クエリで”1”でないもの...
-
クエリの進行状況を知りたい。
-
アクセスでの抽出方法(日付+時...
-
エクセルで条件付きの無作為抽出
-
access クエリの抽出条件を入れ...
-
ACCESS クエリの抽出条件を動的...
-
Accessについて
-
Excelでフィルターを使わずに抽...
おすすめ情報