- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで外部データの取り込みの際の「名前の定義」について。)
エクセル外部データ取り込み時の名前の定義について
このQ&Aのポイント
- エクセルで外部データを取り込む際に、「名前の定義」が自動的に生成されます。しかし、名前のつき方には不定性があります。
- 取り込んだデータがCSVファイルの場合、名前の定義は通常「ExternalData_1」となりますが、一部のデータではファイル名と同じ名前の定義になることがあります。
- この不定性はエクセルのバージョンやデータの種類によって異なる場合があります。原因については明確な解答は得られていません。
- みんなの回答 (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
お礼
end-u さん、いつもありがとうございます。 > 今日もマクロから取り込んだのですか? 違いはこれでした!! 前回はすべてマクロで取り込んでいました。 そして今回は手作業・・・・。 ResultRangeプロパティも初めて知った呪文です。 今回も大変おせわになりました。 ありがとうございます。