Excel のワークシートをデータベースに登録するにはいくつかの方法があります.txt ファイルを BULK INSERT する方法もありますが,今回はワークシートのセル内容を INSERT するクエリを sql ファイルに書き出す VBA コードを説明します.ワークシート名はテーブル名と同じになっており,ワークシートの1行目はテーブルの属性名と同一の順番になっているとの前提で話を進めます.Excel のファイルと同一場所に sql ファイルがシートの数だけ作成されます.
Option Explicit
Sub EXPORT_SQL()
Dim mySht As Worksheet
Dim myAr As Variant
Dim i As Long
Dim j As Long
Dim mySQL As String
Dim SQLAr() As String
Dim myFSO As Object
Dim myTS As Object
Dim myPath As String
Dim n As Long
myPath = ThisWorkbook.Path
For Each mySht In Worksheets
myAr = mySht.UsedRange.Resize(mySht.UsedRange.Rows.Count - 1).Offset(1)
ReDim SQLAr(LBound(myAr) To UBound(myAr))
For i = LBound(myAr) To UBound(myAr)
For j = LBound(myAr, 2) To UBound(myAr, 2)
If myAr(i, j) = Empty Then
mySQL = mySQL & "NULL, "
Else
mySQL = mySQL & "'" & myAr(i, j) & "', "
End If
Next j
mySQL = "INSERT INTO " & mySht.Name & " VALUES (" & Left(mySQL, Len(mySQL) - 2) & ")"
SQLAr(i) = mySQL
mySQL = ""
Next i
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myTS = myFSO.CreateTextFile(Filename:=myPath & "\" & mySht.Name & ".sql", Overwrite:=True)
For n = LBound(SQLAr) To UBound(SQLAr)
myTS.writeline SQLAr(n)
Next n
myTS.Close
Set myFSO = Nothing
Set myTS = Nothing
Next mySht
End Sub