Windows2000
ExcelVBA
Microsoft XML version2.0
環境でXMLデータ処理をしています。
<?xml version="1.0"?>
<!-- enerated -->
<CURS>
<LIST_OS>
<ORSTERY>
<X_W>確認データ</X_W>
<LIST_DATA>
<BREAK>
<USER_NAME>山田</USER_NAME>
<SEC_GR_NAME>部門</SEC_GR_NAME>
<LG_RES>
<G_PS>
<APPL_NAME>部門計算</APPL_NAME>
<RES_NAME>山田</RES_NAME>
</G_PS>
<G_PS>
<APPL_NAME>部門集計</APPL_NAME>
<RES_NAME>山口</RES_NAME>
</G_PS>
</LG_RES>
</BREAK>
</LIST_BREAK>
<AF_W></AF_W>
<BF_X></BF_X>
</ORSTERY>
</LIST_OS>
</CURS>
XMLDOMを用いて 指定されたタグ名のデータだけを取りたいのですが
タグ名:"X_W"を指定 → 確認データ , タグ名:"SEC_GR_NAME"を指定 → 部門
タグ名:"G_PS"を指定 → 部門計算,山田,部門集計,山口 を取りたいのですが
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
'完全なものではないがヒントというか指針。
'そもそもXML自体が整形式(開始タグと終了タグが正しい入れ子になっていて全て存在する)ではなかったので
'書き換えました。
'当然文字コードはBOM付きのUTF-8です
<?xml version="1.0"?>
<!-- enerated -->
<CURS>
<LIST_OS>
<ORSTERY>
<X_W>確認データ</X_W>
<LIST_DATA>
<BREAK>
<USER_NAME>山田</USER_NAME>
<SEC_GR_NAME>部門</SEC_GR_NAME>
<LG_RES>
<G_PS>
<APPL_NAME>部門計算</APPL_NAME>
<RES_NAME>山田</RES_NAME>
</G_PS>
<G_PS>
<APPL_NAME>部門集計</APPL_NAME>
<RES_NAME>山口</RES_NAME>
</G_PS>
</LG_RES>
</BREAK>
<AF_W></AF_W>
<BF_X></BF_X>
</LIST_DATA>
</ORSTERY>
</LIST_OS>
</CURS>
'================Module1====================
Option Explicit
'Optional Namespace As Stringな関数作ると面白そうかな
'当然ながら参照設定でMicrosoft XML version2.0を追加しておくこと。
Public Function LoadMyXML(FileName As String, TagName As String) As Boolean
Dim objXML As MSXML.DOMDocument
Dim strXML As String
Dim Elements As IXMLDOMNodeList
Dim Element As IXMLDOMElement
Set objXML = New MSXML.DOMDocument
If Not objXML.Load(FileName) Then
LoadMyXML = False
Exit Function
End If
Set Elements = objXML.GetElementsByTagName(TagName)
If Elements.Length = 0 Then
LoadMyXML = False
Exit Function
End If
For Each Element In Elements
MsgBox (Element.Text)
LoadMyXML = True
Next
End Function
'=====================UserForm1===================
Option Explicit
'TextBox1,TextBox2,CommandButton1がUserForm1上にある
'TextBox1がファイル名,TextBox2がタグ名なので,色々入力して試してみよう。
'実際にTextBox2に"G_PS"を入力した時には
'「部門計算 山田」
'「部門集計 山口」
'という感じで,カンマでなく、かつ、それぞれ別々にメッセージボックスに表示される。うまく要素を取得するには再帰処理などが必要になるかも
Private Sub CommandButton1_Click()
Dim hoge As Boolean
hoge = LoadMyXML(TextBox1.Text, TextBox2.Text)
End Sub
回答ありがとうございます。お礼が遅くなり申し訳けございません。
回答をもとに、いろいろと試しておりました。
うまく使えそうです。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Delphiのxmlデータバインディン...
-
特殊記号が勝手にエスケープさ...
-
CPUの考え方を教えてください ...
-
eclipseへのxmlファイル追加
-
東芝のDynabookなのですがアン...
-
xmlファイルが上手にHTMLに変換...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
2分探索木の高さを求めるプロ...
-
XML、XSLTの適応エラー(IEから...
-
MSXMLを使ってノードを削除した...
-
同じタグ名の項目取得
-
UTF-8でエンコーディングとはど...
-
VB6.0でDOMを使用して...
-
XMLファイル内のデータ(値)を変...
-
TreeViewについて
-
isnan・isnf関数が「識別子が見...
-
XMLで特殊文字を扱うにはどうし...
-
ASPで型宣言
-
xmlのテキストにリンクを張りた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのXML処理でメモリが足りない?
-
複数のxmlファイルの合体
-
VB6でXMLを処理するには
-
xmlはどんな用途で使われている
-
XMLデータを文字列分割&処理す...
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
バッチファイルでテキストファ...
-
XML、XSLTの適応エラー(IEから...
-
UTF-8でエンコーディングとはど...
-
SNMP リンクダウンとノードダ...
-
ルート要素ノードが2個ある場合?
-
XMLファイル内のデータ(値)を変...
-
xmlファイルが上手にHTMLに変換...
-
同じタグ名の項目取得
-
ExcelVBAで書き出した文字が化ける
-
XPathで途中に名前空間が設定さ...
-
あるノードリストに、特定の名...
おすすめ情報