ExcelVBA~Excelファイル(Excelシートの表データ)をのぞきに行ってそのRecordsetオブジェクトの結果をQueryTableオブジェクトに受ける方法
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  

●参考Webページ
Recordsetオブジェクトの結果をQueryTableオブジェクトで受け取る
↑ここはAccessのmsbファイルのデータをExcelからのぞきに行って、シートにQueryTableオブジェクトで受け取っています。
本記事は、Excelシートをのぞきに行って、ExcelのQueryTableオブジェクトで受けます。
  

●はじめに
  ADOなどのレコードセットをQueryTableオブジェクトで受け取ると、
  自動的に名前範囲の定義設定がなされますので、結果の表を定義された名前で
  扱えるので、セル範囲を気にする必要がなくなる場面が増えます。
  また、フィールド名(列名)の書き出しも自動なので、CopyFromRecordsetのように
  ループ処理でそのコードを書かなくても済みます。
  また、QueryTableオブジェクトのプロパティが使えるため、
  セル幅の自動調整なども長いコードを書かなくても済みます。
  CopyFromRecordsetを使う場合は、それらのどれもが、できませんので、
  何らかの理由がない限り、QueryTableオブジェクトを利用したほうが
  よさそうに目に映ります。

  ただし、MicrosoftQueryやODBC接続でのQueryTableオブジェクトとは違って、
  アクティブシートに結果表示はされるものの、
  ODBC接続じゃないせいか、
  『「編集できない」「MicrosoftQuery」』、
  みたいになります。
  例えば右クリックして「クエリの編集」メニューをクリックすると
  「この外部データ範囲はプログラムによって生成されているため、編集できません」
  というエラーになって、MicrosoftQueryの画面が出てきません。
  ただ、クエリ編集できる方法はどこかにあるのかもしれません。

  とはいえ、前述のとおり、QueryTableオブジェクトのプロパティや
  メソッドが、新規作成時やRecordsetの内容変更時などに使えるので
  便利になるシーンも増えるとは思います。

  便利な順番でいくと、
  (a)ODBC接続+QueryTableオブジェクト出力(表の右クリでMsQuery画面も使える)
  (b)ADO(OLEDB?)接続+QueryTableオブジェクト出力(MsQuery画面使用不可)
  (c)ADO(OLEDB?)接続+Range.CopyFromRecordset出力(特に何もできない。
                                値が貼り付くのみ)
  という感じかもしれません。

  もちろん、シーンによっては、
  「(c)ADO(OLEDB?)接続+Range.CopyFromRecordset出力 が一番
   目的に合っていた・・・」、
  ということもあるでしょうから、
  必ずしもこの順位での決めつけはいけません。
  

●「xlsx」拡張子のExcelシートをのぞきに行ってそのRecordsetをQueryTableオブジェクトに受けた場合
(列名のループでの書き込みが不要だし、QueryTableオブジェクトのメンバーが使えたり、名前定義の自動範囲設定、列幅自動調整などが使える。)

  

●同じく「xlsx」拡張子のExcelシートをのぞきにって、CopyFromRecordsetで受けた場合
(列名のループでの書き込みが必要になってしまう。)