横向けになっている表定義からINSERT文を作成します。
前提条件はコメントに記載の通り。
※DATE型に対するTO_DATEは手動。
Sub SqlInsertCreate()
'
' SqlInsertCreate Macro
'
' テーブル名、項目名、値からINSERT文を自動生成します。
'
' A1:テーブル名
' A2~C2:項目名
' A3~C3:値
' 上記状態の時にE2を選択し、マクロを実行する。
'//=====項目用INSERT文作成===============================
'セルをアクティブにする。
ActiveCell.Offset(0, 0).Select
'アクティブセル列数を取得する。
Dim activCellNoCol As Long
activCellNoCol = ActiveCell.Column
'ループで利用する変数を宣言する。
Dim i As Long
Dim tmpStrCol As String
'アクティブセル列数-2から列数が2になるまで繰り返す
For i = activCellNoCol - 2 To 2 Step -1
tmpStrCol = tmpStrCol & "RC[-" & i & "]&"",""&"
Next i
'項目用INSERT文を作成する。
Dim tmpInsertCol As String
tmpInsertCol = "=" & Left(tmpStrCol, Len(tmpStrCol) - 5) & "&"") VALUES ("""
ActiveCell.Formula = tmpInsertCol
'//=====値用INSERT文作成===============================
'セルをアクティブにする。
ActiveCell.Offset(1, 0).Select
'アクティブセル列数を取得する。
Dim activCellNoVal As Long
activCellNoVal = ActiveCell.Column
'ループで利用する変数を宣言する。
Dim j As Long
Dim tmpStrVal As String
'アクティブセル列数-2から列数が2になるまで繰り返す
For j = activCellNoVal - 2 To 2 Step -1
tmpStrVal = tmpStrVal & "RC[-" & j & "]&""','""&"
Next j
'値用INSERT文を作成する。
Dim tmpInsertVal As String
tmpInsertVal = "=""'""&" & Left(tmpStrVal, Len(tmpStrVal) - 7) & "&""');"""
ActiveCell.Formula = tmpInsertVal
'//=====テーブル用INSERT文作成===============================
'セルをアクティブにする。
ActiveCell.Offset(-2, 0).Select
'アクティブセル列数を取得する。
Dim activCellNoTbl As Long
activCellNoTbl = ActiveCell.Column
'テーブル名の位置を求める。
Dim tblNameNo As String
tblNameNo = activCellNoTbl - 2
Dim tmpInsertTbl As String
tmpInsertTbl = "=""INSERT INTO ""&RC[-" & tblNameNo & "]&"" ("""
ActiveCell.Formula = tmpInsertTbl
'セルを初期値に戻す。
ActiveCell.Offset(1, 0).Select
End Sub