★ExcelVBA ~ パワークエリのかわり~ SQLとODBCで、ブック内の全シートを「列名指定だけで」、縦に結合するプログラム。列さえあればその並び順は左右ぐちゃぐちゃでもOK!!(もしどこかのシートに「足らない列」があった場合は、その列を「データ無し」で自動追加しながら。)
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。

  

ブック内の全シートを「列名指定だけで」、縦に結合するプログラムです。

各シート内に不足列があれば自動的に(データ無しの)列が追加されますし、
全シート、同じ名前の列さえあれば、「各シート内でのその列の並び順」は、
左右ぐちゃぐちゃでもOKです!!

パワークエリだと
「このレベルですら」
「M言語を学習しないと無理」で、
「意外と簡単に」
「VBA以上に」
「属人化する」ので、
かえってVBAのほうが「土台を作るのは面倒かも」しれませんが、そのあとの作り替えや「操作自体」は、VBAのほうが簡単かもしれません。

空白のシートをつくったのち、「全シートで統一したい、そういう列名」を指定してF5キー押すだけですから。パワークエリのようにいくつもステップ作ったり、などの面倒な操作は全くありません。

以降の2つのモジュールを標準モジュールを適当に2つ作ってコピペし、
1つ目のモジュールの「test04()」関数を、
「統一したい列名」の設定部分だけ目的に合うように書き変えたのち、
空白のシートを作ってからそれを表示した状態で、F5キーを押すことで実行するだけです。

QuetyTableのあるシートを初期化するには、
1つ目のモジュールの「QTDell04」関数を使ってください。
じゃないと名前定義でひっかかって中断されてしまいますので・・・。

1つ目のモジュールの「test04()」関数の書き換え部分は、
「'以下、すべてのシートにて、足らないフィールド名の追記」の部分と、
「'以下、すべてのシートを通してのSQLの生成」の部分の2か所です。
いずれも「For Each」のループの中です。

そこのコメントに書いてあるように修正します。
基本、その2箇所で、同じ列名を指定すればOKです。

モジュールのコピペさえしてしまえば、
単純なものであれば、パワークエリでやるよりは簡単かと思います。

なお、各シートでレコードが追加されたら、QuetyTableのシートで右クリックして「更新」すれば、その内容が反映されます。

少し書き変えれば、パワークエリでやりたいような、
「列構成が違うシートを無理矢理縦結合する」
「すべてのサブフォルダの、すべてのファイルの指定したシートだけの列構成が違うシートを無理矢理縦結合する」
「それの指定したファイルだけをやる」
みたいなこともできると思います。

  
  

★1つ目のモジュール

  

★2つ目のモジュール