横向けになっている表定義から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