<?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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
-
4
エクセル VBAでの転記の方法について
Visual Basic(VBA)
-
5
VBA とびとびの列を結合させる
Visual Basic(VBA)
-
6
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
7
Excel マクロについて
Visual Basic(VBA)
-
8
Excelの各シートを色ごとで分類して値転記するマクロの作り方を教えて下さい。
Visual Basic(VBA)
-
9
エクセルのマクロのコードについて
Visual Basic(VBA)
-
10
特定文字を入ってるCSVの特定の列を特定のexcelシートに取り込みたいです
Visual Basic(VBA)
-
11
Excel VBA ダブルクリックで入力 複数まとめる
Visual Basic(VBA)
-
12
Excelセルに入力された文字の色を変える方法を教えてください
Visual Basic(VBA)
-
13
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
14
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
15
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
16
郵便番号検索APIにてget ElementByTagNameでうまくを取得できない
Visual Basic(VBA)
-
17
引数に数値、文字列の混在
Visual Basic(VBA)
-
18
エクセルVBAでデータ転記
Visual Basic(VBA)
-
19
xlsmファイルで、別名ファイルを保存する方法
Visual Basic(VBA)
-
20
Vba Cells.Findについて教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
FindFirst を複数条件で検索
-
vscode 文字化け
-
phpでボタンを押したときに変数...
-
構造体の各データの表示につい...
-
パイソンのクラスについて
-
【メモリ不足で落ちる(python)】
-
VBA他のブックから値のみ貼付す...
-
ACCESS テキストボックスを隙...
-
パイソンプログラミング
-
2つのpythonがあって、一方で...
-
実行時エラー 3020の対策
-
vbaでxmlからNodeListでデータ...
-
パイソンのクラスのブログラム
-
文字の横にプルダウンを表示さ...
-
JSONで文字列が長い時
-
シェルスクリプトで、空白(ス...
-
Pythonでターミナルに文字を出...
-
パイソンのクラスについて
-
formで特定のinputを送信しない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
[python] 文字列を変数名として...
-
ACCESS テキストボックスを隙...
-
FindFirst を複数条件で検索
-
【メモリ不足で落ちる(python)】
-
VBA他のブックから値のみ貼付す...
-
構造体の各データの表示につい...
-
VBAでPDFのコピーとリネームを...
-
パイソンプログラミング
-
phpでボタンを押したときに変数...
-
vscode 文字化け
-
vbaでxmlからNodeListでデータ...
-
コンボボックスのtag情報の取得...
-
「*:*」って何を意味するのでし...
-
パイソンのクラスのブログラム
-
構造体の変数の値を、動的に取...
-
パイソンのクラスについて
-
C言語について
-
VBAで特殊文字を出力したい
おすすめ情報