【マクロ(業務効率化ツール)】ExcelからマクロでSQLを生成する
【内容】
◯処理の流れ
①ファイルobjを宣言
②sql生成内容をシートから取得
③sqlの組み立て
④ファイルへの書き込み
⑤ファイルのクローズ
※②から④を繰り返し
前提:対象エクセルのカラムが
・4行ごとに対象カラムが縦に並んでいる
だったため、カウントする際、対象のカラムの値もカウントするようにしています。
【参考】
Dim FSO As New FileSystemObject ' FileSystemObject Dim TS As TextStream ' TextStream Dim targetSheetNM As String '対象シート名 Dim targetTableNM As String '対象テーブル名 Dim strInsItems As String ' テーブル項目名(登録[INSERT]) Dim strInsValues As String ' 登録値 Dim tableName As String 'テーブル名 Dim column1 As String '登録項目1 Dim column2 As String '登録項目2 Dim target_row As Integer Dim count As Integer target_row = 3 count = 0 targetTableNM="test_table" targetSheetNM="test" '書き込みファイルオープン Set TS = FSO.CreateTextFile(Filename:="C:\test.sql", Overwrite:=True) ' *** コメントを書き込み *** TS.WriteLine "-- ******************************************" TS.WriteLine "-- *◯◯登録SQL" TS.WriteLine "-- ******************************************" ' === SQL生成 =============================================================== Do While Worksheets(targetSheetNM).Range("B" & target_row).Value <> "" column1 = Worksheets(targetSheetNM).Range("B" & target_row).Value 'column1 column2 = Worksheets(targetSheetNM).Range("B" & target_row+1).Value 'column2 ' *** INSERT句 *** strInsItems = "INSERT INTO " & targetTableNM & " (" _ & "column1, " _ & "column2, " _ & ") " strInsValues = "VALUES (" _ & "'" & column1 & "', " _ & "'" & column2 & "', " _ & ") " ' INSERT句を書き込み TS.WriteLine strInsItems & strInsValues target_row = target_row + 3 count = count + 1 Loop ' コミットを追加 TS.WriteLine "commit;" ' 指定ファイルをCLOSE TS.Close Set TS = Nothing Set FSO = Nothing ' 終了の表示 MsgBox "ファイル出力が完了しました。(" & count & "行処理しました )" End Sub