使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
クエリのSQLをVBAで書き換えて自動化するぐらいしかなさそうです。
クエリ名を Q1 として、
Dim qd As DAO.QueryDef
Dim stSql As String
Dim i As Integer
stSQL = "SELECT テーブルB.ID, "
For i = -3 As -1
stSQL = stSQL & "テーブルA." & Month(DateAdd("m",i,Date())) & "月分, "
Next
stSQL = stSQL & "Null As " & Month(Date()) & "月分, " & _
"テーブルB.型番, テーブルB.製品名, テーブルB.シリアル番号, テーブルB.価格 " & _
"FROM テーブルB LEFT JOIN テーブルA " & _
"ON テーブルB.シリアル番号 = テーブルA.シリアル番号 " & _
"ORDER BY テーブルB.ID;"
Set qd = CurrentDb.QueryDefs("Q1")
qd.SQL = strSQL
Docmd.TransferSpreadsheet acExport, , "Q1","C:\test\test.xls", True