とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

【Excel-マクロ】テストデータ作成支援マクロ Excelから、DBへのInsert文を生成します。

テストデータ作成支援ツールは色々あると思うけど、
だいたいはテキストエディタで正規表現を使ってゴニョゴニョやることが多かった。
そろそろそれも面倒になってきたのでマクロ作ってみた。

SQL Serverの結果ペインからコピペしてExcel保存しとけば
いつでもデータ復元できて便利じゃないかなー。
コピペの際にはセルの書式は文字列にしておいてね。

やっつけで作ったけど。
一応NULL文字も対応してる。

既知のバグとして、キャンセルボタンが効かないかもしれないのでご注意!



Public Sub テスト支援_Insert文作成()

Dim tablename As String
tablename = InputBox("Insert Into {テーブル名}", "テーブル名を指定", "")

Dim columns As String

'ヘッダ作成
Dim objColumns As Range '選択されたセルの集合
Set objColumns = Application.InputBox(prompt:="ヘッダを含むデータを指定", Type:=8)
If IsEmpty(objColumns) Then 'キャンセルが押されたかチェックする
MsgBox "キャンセルが押されました"
Exit Sub
End If

columns = MAKE_CSV_FORMAT(objColumns)

'ファイル名を作成 ファイル名は自分のパス+\test.html
Dim strFNAME As String 'ファイル名保存用
strFNAME = ActiveWorkbook.Path & "\result.csv" 'ファイル名を作る

'テーブルデータを作成する
Call MAKE_CSV_FILE(tablename, columns, strFNAME, objColumns)

'できたファイルをメモ帳で表示して確認する
Shell "notepad.exe " & strFNAME '手抜きでShellで起動

End Sub


'ファイル名とセルの範囲RANGEを受け取り、
'ファイルを開きカンマ区切りのファイルを作成する
Sub MAKE_CSV_FILE(strTableName As String, strColumns As String, strFNAME As String, objHANI As Range)

'ファイルをオープンする
Dim FNO As Integer 'ファイル番号
FNO = FreeFile '空いてるファイル番号を取出す
Open strFNAME For Output As #FNO 'テキストファイルを新規作成

'行、列でループを作る
Dim y As Integer
Dim x As Integer
For y = 2 To objHANI.Rows.Count '行ループ

'Insert文出力
Print #FNO, "INSERT INTO " & strTableName & " (" & strColumns & ") VALUES ( ";

Print #FNO, "'" & objHANI.Cells(y, 1).Value & "'"; '先頭項目の出力

For x = 2 To objHANI.columns.Count '列ループ
Print #FNO, ",";
If objHANI.Cells(y, x).Value <> "NULL" Then
Print #FNO, "'" & objHANI.Cells(y, x).Value & "'";
Else
Print #FNO, "NULL";
End If
Next x

Print #FNO, ")" '改行のみ出力
Next y

'ファイルをクローズする
Close #FNO

End Sub

'ファイル名とセルの範囲RANGEを受け取り、
'ファイルを開きカンマ区切りのヘッダを
Function MAKE_CSV_FORMAT(objHANI As Range) As String

'行、列でループを作る
Dim y As Integer
Dim x As Integer
Dim ret As String
y = 1
ret = objHANI.Cells(y, 1).Value '先頭項目の出力
For x = 2 To objHANI.columns.Count '列のループ
ret = ret & ","
ret = ret & objHANI.Cells(y, x).Value
Next x

MAKE_CSV_FORMAT = ret
End Function

▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/25-955408f6
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad