はじめまして。
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も見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
-
XMLをエクセルに取り込むマクロ
Visual Basic(VBA)
-
Excel-VBAでXMLの複数ノードの取り出し
Visual Basic(VBA)
-
-
4
excel vbaでのxml出力がわかりません
Visual Basic(VBA)
-
5
XML文書の指定した属性値を持つノードを取得したい
XML
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
PCゲームから音声ファイルを抽...
-
アクセスでの抽出方法(日付+時...
-
Access テーブルを分割してエク...
-
ACCESS クエリで”1”でないもの...
-
クエリの進行状況を知りたい。
-
ACCESS クエリの抽出条件を動的...
-
Access 2003 iif [日付フィール...
-
エクセルのマクロで検索・抽出...
-
アクセスのクエリで空白データ...
-
Access 抽出した重複データを一...
-
元データから連続5日以上だった...
-
access 無作為抽出をしたい
-
アクセス2000で、DBの0と空白以...
-
ACCESSの時間帯の抽出について
-
Accessで「式で型が一致しません...
-
access クエリの抽出条件を入れ...
-
ACCESSのクエリで集計
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
アクセスでの抽出方法(日付+時...
-
PCゲームから音声ファイルを抽...
-
access クエリの抽出条件を入れ...
-
ACCESSのクエリで集計
-
エクセルのマクロで検索・抽出...
-
アクセス・クエリの抽出条件(...
-
最大値以外の抽出方法
-
アクセス2000で、DBの0と空白以...
-
accessの日付フィールドから前...
-
元データから連続5日以上だった...
-
ここの赤マルの部分なんていう...
-
ACCESS クエリの抽出条件を動的...
-
ACCESS クエリで”1”でないもの...
-
Access 2003 iif [日付フィール...
-
Accessクエリーでチェックボッ...
おすすめ情報