こんにちは、またExcelの質問です。
前回の疑問は、解決しました。
リンク内容
問題になってしまったのは、数字のみでできてる文字列の場合です。
たとえば、セルに123456という価が入っている場合、Textとして扱い(‘123456’)したいですが、書いたコードだと、SQLのValueに数字のまま123456が入ってしまいます。
Excelでセル形式を文字列にしてみたり、数字の前に「‘」をつけて文字列に強制変換してみましたが、やはり数字として入ってしまいます。
現在、テーブルにこんな感じでデータが入っていて、SQL文を生成したら、以下になります。(Excelで、create_id列は数値、その他は文字列として形式設定しました。)
|corp_name|description|create_id|create_at
|:--|:--:|--:|
|B会社|123456|1|null
SQL
1INSERT INTO test_corps (corp_name,description,create_id,create_at) VALUES (‘B会社’,123456,1,NULL);
望ましい結果は、こんな感じです。
SQL
1INSERT INTO test_corps (corp_name,description,create_id,create_at) VALUES (‘B会社’,‘123456’,1,NULL);
VBAでコードを書き、セルを繰り返しながら、数字か、空白か、その以外かを判別し、それぞれの処理を行う形です。コードは以下のようです。
VBA
1 '列だけ繰り返す 2 For currentColumnIndex = targetRange.Column + 1 To targetRange.Columns.Count 3 4 '最初でなければ 5 If (currentColumnIndex <> targetRange.Column + 1) Then 6 sql = sql & ", " 7 End If 8 9 'セルを指定 10 Set currentCell = srcSheet.Cells(currentRowIndex, currentColumnIndex) 11 12 'nullか空白なら 13 If IsNull(currentCell) Or Trim(currentCell.Value) = "" Then 14 sql = sql & "null" 15 16 '数値なら 17 ElseIf IsNumeric(currentCell.Value) Then 18 sql = sql & currentCell.Value 19 20 'それ以外なら 21 Else 22 sql = sql & "'" & currentCell.Value & "'" 23 End If 24 25 Next
行か列の形式で数字か文字列かを判別するか、何かIsNumeric以外のメソッドでできる方法がありましたら、教えてください。
長くなりましたが、よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/03 04:33