「Excel/TIPS」の編集履歴(バックアップ)一覧はこちら
「Excel/TIPS」(2014/01/09 (木) 14:08:29) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
-[[ガントチャート-free>>http://exl-apps.jimdo.com/%E3%82%AC%E3%83%B3%E3%83%88%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88-free/]]
-[[開発マイルストーン>>http://zudajijp.zouri.jp/km/]]
-[[インサート文生成マクロ>>http://sugarmemo.blog7.fc2.com/blog-entry-5.html]]
--Excelのシートに記述したデータを、SQLのInsert文に変換するマクロ
■使用例
以下の要領でシートにデータを記述します。
・1行目に列名
・2行目に列の型
・3行目以降は列の値
・最後の次の行の1列目のセルに、エンドマーク『#END』
上記の要領で書き上げたシートが下図です。(クリックで拡大)
-[[ExcelからSQLのINSERT文を作成するマクロ>>http://d.hatena.ne.jp/grachro/20110619/1308488583]]
Option Explicit
Sub createInsertSql()
Dim newbook As Workbook
Dim currentCell As Range
'前処理
Dim srcSheet As Worksheet
Set srcSheet = ActiveSheet
Dim targetRange As Range
Set targetRange = srcSheet.UsedRange
'INSERT文の前半
Dim head As String
head = "INSERT INTO " & srcSheet.Name & " ("
Dim first As Boolean
first = True
Dim currentColumnIndex As Integer
For currentColumnIndex = 1 To targetRange.Columns.Count
If (first) Then
first = False
Else
head = head & ","
End If
Set currentCell = srcSheet.Cells(1, currentColumnIndex)
head = head & currentCell.Value
Next
head = head & ") "
'新しいBook作成
Set newbook = Workbooks.Add
'INSERT文のvalues以降
Dim currentRowIndex As Integer
For currentRowIndex = 2 To targetRange.Rows.Count
Dim sql As String
sql = head & "values ("
first = True
For currentColumnIndex = 1 To targetRange.Columns.Count
If (first) Then
first = False
Else
sql = sql & ","
End If
Set currentCell = srcSheet.Cells(currentRowIndex, currentColumnIndex)
If IsNull(currentCell) Or Trim(currentCell.Value) = "" Then
sql = sql & "null"
ElseIf IsNumeric(currentCell.Value) Then
sql = sql & currentCell.Value
Else
sql = sql & "'" & currentCell.Value & "'"
End If
Next
sql = sql & ");"
newbook.ActiveSheet.Cells(currentRowIndex - 1, 1).Value = sql
Next
End Sub
#amazon2(468x60)
EOF
-[[進捗管理表のフォーマットサンプル>>http://blog.admage.jp/?p=288]]
-[[ガントチャート-free>>http://exl-apps.jimdo.com/%E3%82%AC%E3%83%B3%E3%83%88%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88-free/]]
-[[開発マイルストーン>>http://zudajijp.zouri.jp/km/]]
-[[インサート文生成マクロ>>http://sugarmemo.blog7.fc2.com/blog-entry-5.html]]
--Excelのシートに記述したデータを、SQLのInsert文に変換するマクロ
■使用例
以下の要領でシートにデータを記述します。
・1行目に列名
・2行目に列の型
・3行目以降は列の値
・最後の次の行の1列目のセルに、エンドマーク『#END』
上記の要領で書き上げたシートが下図です。(クリックで拡大)
-[[ExcelからSQLのINSERT文を作成するマクロ>>http://d.hatena.ne.jp/grachro/20110619/1308488583]]
Option Explicit
Sub createInsertSql()
Dim newbook As Workbook
Dim currentCell As Range
'前処理
Dim srcSheet As Worksheet
Set srcSheet = ActiveSheet
Dim targetRange As Range
Set targetRange = srcSheet.UsedRange
'INSERT文の前半
Dim head As String
head = "INSERT INTO " & srcSheet.Name & " ("
Dim first As Boolean
first = True
Dim currentColumnIndex As Integer
For currentColumnIndex = 1 To targetRange.Columns.Count
If (first) Then
first = False
Else
head = head & ","
End If
Set currentCell = srcSheet.Cells(1, currentColumnIndex)
head = head & currentCell.Value
Next
head = head & ") "
'新しいBook作成
Set newbook = Workbooks.Add
'INSERT文のvalues以降
Dim currentRowIndex As Integer
For currentRowIndex = 2 To targetRange.Rows.Count
Dim sql As String
sql = head & "values ("
first = True
For currentColumnIndex = 1 To targetRange.Columns.Count
If (first) Then
first = False
Else
sql = sql & ","
End If
Set currentCell = srcSheet.Cells(currentRowIndex, currentColumnIndex)
If IsNull(currentCell) Or Trim(currentCell.Value) = "" Then
sql = sql & "null"
ElseIf IsNumeric(currentCell.Value) Then
sql = sql & currentCell.Value
Else
sql = sql & "'" & currentCell.Value & "'"
End If
Next
sql = sql & ");"
newbook.ActiveSheet.Cells(currentRowIndex - 1, 1).Value = sql
Next
End Sub
#amazon2(468x60)
EOF