
<?xml version="1.0" encoding="utf-8"?>
<customer>
<customer_no>123456</customer_no>
<last_name>山田</last_name>
<first_name>太郎</first_name>
</customer>
<customer>
<customer_no>154653</customer_no>
<last_name>山田</last_name>
</customer>
上記のようなxmlから、customer_no、last_name、first_nameをNodeListでEXCELに取得しております。
2番目のレコードにfirst_nameのデータがないので、first_nameというタグもありません。
NodeListでEXCELにはきだすと、データがない箇所は詰めて取得されるのでずれてしまいます。
データがない場合は空欄で取得させたいです。
どなか教えていただけますでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは
ご質問文中に「nodeList」とあるので、XMLDOM経由で取得しているものと推測しました。
>NodeListでEXCELにはきだすと、データがない箇所は詰めて
>取得されるのでずれてしまいます。
必要項目が決まっているようですから、あらかじめ必要な分の箱を用意しておいてから、そこに要素の値を放り込むようにすれば良いのではないでしょうか?
以下は、Dictionaryオブジェクトを利用した例です。
必要項目は、仮に、ご例示の3項目として・・
Set Dic = CreateObject("Scripting.Dictionary")
ItemList = Array("customer_no", "last_name", "first_name")
などと設定しておき、
仮に、customerタグのnodeListが、変数customersに得られているとして・・
For Each c In customers
'必要項目を未入力に設定
For Each r In ItemList: Dic(r) = "未入力": Next r
'項目内の子要素をリストアップ
For Each nd In c.ChildNodes: Dic(nd.nodeName) = nd.Text: Next nd
'必要な項目を出力
For Each r In ItemList: Debug.Print (r & " = " & Dic(r)): Next r
Next c
のような感じでループすれば、抜けている項目は"未入力"として出力されます。
これを空欄にしたければ、初期設定で空白文字列にしておけば良いでしょう。
※ アプリケーションが不明なので、上では出力はDebug.Printにしてあります。
※ Textが長い場合は全部記録するとメモリの無駄なので、
Dic.Exists(nd.nodeName)
で判断して、不要な記録はスキップする方が良いかも知れません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 3020の対策
-
Application.ScreenUpdating = ...
-
[python] 文字列を変数名として...
-
JSONで文字列が長い時
-
セレクトボックスを非表示にし...
-
SELECT OPTIONの中身をコピペ...
-
関数「exists」と「defined」の...
-
formで特定のinputを送信しない...
-
インラインフレーム内へのリンク
-
プルダウンリストの背景色の指定
-
複数列を持ったリストボックス...
-
メモリをアドレスを直接指定し...
-
シェルスクリプトで、空白(ス...
-
数値かどうかの判定方法
-
C言語のflagの使い方が分かりま...
-
セレクトボックスのselected属...
-
Pythonの np.indicesに関する質...
-
日付の差分の求め方(日、分)
-
16進の10進変換について
-
sendmailで複数の宛先にメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
「*:*」って何を意味するのでし...
-
実行時エラー 3020の対策
-
ACCESS テキストボックスを隙...
-
vbaでxmlからNodeListでデータ...
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
構造体の各データの表示につい...
-
[python] 文字列を変数名として...
-
講義でわからないのですが以下...
-
構造体の変数の値を、動的に取...
-
C言語 当選者
-
vscode 文字化け
-
コンボボックスのtag情報の取得...
-
What could be kanji of the Ja...
-
【メモリ不足で落ちる(python)】
-
パイソンのクラスについて
-
python、継承を確認するための...
-
VBA他のブックから値のみ貼付す...
-
VB6のLSETをVB2005で実現するに...
おすすめ情報