
<?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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- JavaScript gasについて 1 2022/05/31 21:51
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- JavaScript コードレビューをお願いします。 3 2023/12/17 01:07
- JavaScript IndexedDB を使ってファイルアップロード可能な掲示板を非同期通信で作成したい 1 2023/11/19 15:34
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
pythonの初心者です!コマンド...
-
ACCESS テキストボックスを隙...
-
Rubyの引数が理解できません。...
-
【メモリ不足で落ちる(python)】
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
Did you name your dog Koro? ...
-
JSONで文字列が長い時
-
セレクトメニューについて
-
<SELECT>タグの折り返し
-
formで特定のinputを送信しない...
-
Fire fox の 文字化けを解消...
-
メモリをアドレスを直接指定し...
-
日付の差分の求め方(日、分)
-
perl で環境変数を表示できない
-
文字の横にプルダウンを表示さ...
-
ダブルクォーテーションの中に...
-
Telnetモジュールで繋がりません。
-
セレクトメニューで2つの項目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
ACCESS テキストボックスを隙...
-
[python] 文字列を変数名として...
-
vbaでxmlからNodeListでデータ...
-
VBAでPDFのコピーとリネームを...
-
コンボボックスのtag情報の取得...
-
【メモリ不足で落ちる(python)】
-
構造体の各データの表示につい...
-
構造体の変数の値を、動的に取...
-
phpでボタンを押したときに変数...
-
VBAで特殊文字を出力したい
-
C言語でテキストを抽出
-
PHP+SQLiteでmax(id)が使えない?
-
「*:*」って何を意味するのでし...
-
C++ コマンドプロンプトでの入...
-
2つのpythonがあって、一方で...
-
VBAでシート名の定義を変更した...
-
GUI操作のCUI化
おすすめ情報