>SQL RDB 初耳です。
DB、とりわけRDBを扱う場合、SQLは必須であり、
PowerQueryやpivotテーブルの機能は
内部ではSQLを使っているものと思います。
SQLはマスターして損のない言語(Language)と思います。
ちょっと時間があったので、
https://www.noboyu.com/entry/2017/01/08/213436
と同じことを実現するコードをVBA+SQLで書いてみましたので
よかったら学習教材に加えてみてください。
例えば
https://okwave.jp/qa/q9664019.html
この課題も
(1行目がタイトル行であることが前提です。)
以下のコード、あるいはPowerQueryでも
対応できるものと思います。
Sub Sample()
Const Path As String = "D:\Test\hoge\"
Const GetShName = "Sheet1" '取得するシート名
Dim cn As Object
Dim rs As Object
Dim buf As String
Dim cnt As Long
Dim SQL As String
Dim ColCouner As Long
Dim MaxRow As Long
Dim PutSheet As Worksheet
Set PutSheet = ThisWorkbook.Sheets(1) '書き出すシート
PutSheet.Cells.ClearContents
SQL = "SELECT * " & "FROM [" & GetShName & "$A1:Z1000]" & vbCrLf
buf = Dir(Path & "*.xlsx")
cnt = 0
Do While buf <> ""
cnt = cnt + 1
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1"
cn.Open Path & buf
rs.Open SQL, cn
If cnt = 1 Then
For ColCouner = 0 To rs.Fields.Count - 1
PutSheet.Cells(1, ColCouner + 1).Value = rs.Fields(ColCouner).Name
Next ColCouner
End If
MaxRow = PutSheet.Cells(Rows.Count, 1).End(xlUp).Row
PutSheet.Cells(MaxRow + 1, 1).CopyFromRecordset rs
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
buf = Dir()
Loop
End Sub
お礼
最近、お礼忘れという機能ができました。必ずお礼をする主義ですが忘れていました。遅ればせながら、お礼をさせていただきます。 「VBA 程度なら簡単」 はっきり言って、 「POWER QUERY は簡単」といっている連中に対する皮肉です。 私は、VBA は簡単と思っていますが、普通は言いません。できない人が不快に思うでしょう。 POWER QUERY だって同じです。簡単といわれればできない人が不快に思います。POWER QUERY ができる人はどうしてこのような配慮ができないのでしょうか。