• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで外部データの取り込みの際の「名前の定義」について。)

エクセル外部データ取り込み時の名前の定義について

このQ&Aのポイント
  • エクセルで外部データを取り込む際に、「名前の定義」が自動的に生成されます。しかし、名前のつき方には不定性があります。
  • 取り込んだデータがCSVファイルの場合、名前の定義は通常「ExternalData_1」となりますが、一部のデータではファイル名と同じ名前の定義になることがあります。
  • この不定性はエクセルのバージョンやデータの種類によって異なる場合があります。原因については明確な解答は得られていません。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

取り敢えず。 マクロでQueryTableのNameプロパティを指定せずに実行すると、 『ExternalData_#』という名前が自動付加されますね。 手作業では[外部データ範囲のプロパティ]ダイアログの 「名前」ボックスは未入力状態では受け付けてくれません。 何も弄らないと、デフォルトでセットされたファイル名、 あるいはクエリ名などが付けられる事になります。 >..今日、数日前と同じ2003で、数日前と同じCSVファイルで取り込んだら、 >"CSV10000"というファイル名で名前が定義されてしまいました。 今日もマクロから取り込んだのですか? >取り込み範囲の名前の定義を、取り込み後のVBAコードで使用するため、 >名前がつき方が不定だとまずいのです。 取り込み時に任意の名前をつければ良いかと思います。 自動記録で With ActiveSheet.QueryTables.Add(...)   .Name = "CSV10000" : などと記録されますよね。ここでNameを付ければ良いです。 あるいは、名前定義に頼らず、取り込み後はQueryTableの ResultRangeプロパティを使用しても良いかと思います。 With ActiveSheet.QueryTables   If .Count > 0 Then     MsgBox .Item(1).ResultRange.Address     '名前そのものが必要なら、QueryTableからの取得も可能です。     'MsgBox .Item(1).Name   End If End With

merlionXX
質問者

お礼

end-u さん、いつもありがとうございます。 > 今日もマクロから取り込んだのですか? 違いはこれでした!! 前回はすべてマクロで取り込んでいました。 そして今回は手作業・・・・。 ResultRangeプロパティも初めて知った呪文です。 今回も大変おせわになりました。 ありがとうございます。

関連するQ&A