はじめまして。
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Excel(エクセル) VBAで複数のExcelを1つのExcelにまとめる 1 2022/09/04 11:08
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
アクセス・クエリの抽出条件(...
-
access クエリの抽出条件を入れ...
-
ACCESS クエリの抽出条件を動的...
-
accessの日付フィールドから前...
-
最大値以外の抽出方法
-
アクセス2000で、DBの0と空白以...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
元データから連続5日以上だった...
-
アクセスでの抽出方法(日付+時...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
ExcelのVBAで、XMLファイルのデ...
-
エクセルのマクロで検索・抽出...
-
クエリの進行状況を知りたい。
-
access 無作為抽出をしたい
-
Access 選択クエリ 演算 抽...
-
accessクエリで直前の水曜日〜...
-
access 文字列で範囲指定する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESS 「パラメータの入力」...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
PCゲームから音声ファイルを抽...
-
アクセス・クエリの抽出条件(...
-
accessの日付フィールドから前...
-
エクセルのマクロで検索・抽出...
-
元データから連続5日以上だった...
-
アクセスでの抽出方法(日付+時...
-
access クエリの抽出条件を入れ...
-
ACCESS クエリで”1”でないもの...
-
ACCESSのクエリで集計
-
ACCESS クエリの抽出条件を動的...
-
クエリの進行状況を知りたい。
-
最大値以外の抽出方法
-
Access 2003 iif [日付フィール...
-
Access:クエリの複数『or条件...
-
アクセスのクエリで空白データ...
おすすめ情報