オラクルやSQLサーバなどのデータベースを使われている方でSQL文として、ExcelデータからのINSERT文など作成したい!と思ったことありませんか。~"を埋め込むことでもできますが、Excel-VBAで作成してみました。プログラムは基本的なコマンドのみを使うようにして、読みやすく理解しやすいようにしています。今回のサンプルプログラムはExcel上のデータからデータベースへ直接追加するSQLのINSERT文を自動生成するです。実行までの手順1.Excelを起動し、データ準備1).Excel2007以降は、Sheet1のみであるためシートを1つ追加し、全部で2つ作成しておきます。2).シート1には、予め作成しておいたり、すでにあるデータを加工編集したデータを格納しておきます。見出し行とデータ行の間に1行追加し、数字タイプの場合は追加した2行目に[N]を入力しています。項目が数字タイプの場合には、囲い込み文字である['](シングルクォーテション)は不要にするためです。(後述)2.Excel-VBAを起動Altを押した状態でF8キーを押します。3.[マクロ名(M):]に'test'と入力(''は不要、''内のtestを入力)4.[作成(C)]をクリック私はマクロ名を入力したら、そのままEnterを押します。String'1列3行目を起点にして最後の行を求める。Sheets(1).Range("A3").End(xlDown).Row'1列1行目を起点にして最後の列を求める。Sub7.F5キーで実行8.実行結果の確認もとのデータファイルに切り替えて下さい。Altを押した状態でTabキーを押して、Book1に位置づいたらTabキーを離すことで切り替わります。シート2には、INSERTのSQL文が生成されています。シート2のSQL文は1行目からではなく、シート1と同じ3行目から生成しました。("]でセットいます。上記の箇所に'HANBAIDB.顧客M'をコーディングしても同じですが、処理の中にあります。別のテーブルに使用する場合は、先頭で定義しておくほうが変更しやすいです。・シート1の2行目に挿入した意味シート1で項目[生年月日]は、数字タイプとして扱っています。そのため、追加した2行目には[N]と入力し、プログラムで[N]の場合には['](シングルクォーテション)を付けないようにしています。言うまでもなく、特に[N]でなくても何でも良いんですよ。[Num]と入力したら、プログラム内の判断部分も合わせれば良いだけです。・見栄えや出来上がりは任意に修正する例えば「スペースの個数が少なく見づらい!」とか「改行を入れたい!」などの場合には、修正します。vbCrLf]を追記します。vbCrLfまた、「最後の[;]は要らない!」場合には、削除します。生成した文字列をファイルに出力する場合SQL文をExcel内ではなくテキストファイルに出力する場合には、以下の通りです。#1'1列3行目を起点にして最後の行を求める。Sheets(1).Range("A3").End(xlDown).Row'1列1行目を起点にして最後の列を求める。#1テキストファイルの出力先も先頭の[FILENAME]の設定値を変更します。"C:\temp\sql.txt"また、テキストファイルに出力する際に1行空白行を挿入していますが、不要な場合には以下を削除します。""最後にテーブル名やSQLをファイルに出力する場合のフィル名について、設定用のシートを追加することも考えたのですが、「手っ取り早くSQLを生成したい場合が多いのではないのかなぁ」と考えました。そのため今回は、プログラム内で定義する方法としました。修正する手間は同じですが「シートを移動して修正」よりは「データシートはセットした、あとはプログラムを実行する際に修正」の方が。今回のサンプルは、SQLという専門性の偏ったものを生成する内容になりましたが、SQLにこだわることはありません。項目数が多い場合にExcel関数で実現しようとすると手間が掛かりますし、ミスも起きやすいでしょう。プログラムであれば、データをプログラムで処理するルール通りに作成して置けば、直ぐに適用できます。スプレッドシート上で実行するプログラムも作成しました。以下の記事のGAS版です。シート1データからシート2のINSERTのSQLを作成します。コメントをキャンセルメールアドレスが公開されることはありません。※コメントは日本語で入力してください。コメントデータの処理方法の詳細はこちらをご覧ください。VBAスポンサーリンクプロフィールはじめまして、健史(たけふみ)と申します。このブログにお越し頂き、ありがとうございます。私は若いころから不摂生な生活を送ってきたために、いろいろな病気や慢性痛になりました。(3)人気記事マクロ''を実行できません。自分で改善.メニューホーム記事一覧プロフィールお問い合わせホーム検索トップサイドバ。