【VBA】セルの内容を一括でSQL文に変換するマクロ

Excel/VBA

このデータでINSERT(UPDATE)しといて!とエクセルを渡される事が個人的に多々あります。
そんな時に毎度ちまちま文字列くっ付けてSQL作るのが面倒だったので解消するマクロを作ってみた

スポンサーリンク

やりたい事


例えばこんな社員テーブルがあったとして、

名前状態役職ID
本田在籍チーフ1
茂野在籍正社員2
佐藤退職3
小森在籍正社員4

この内容に更新しといて~とこんなエクセルが飛んでくる↓

こんな時いつもE1に=”UPDATE テーブル SET ” & $A$1 & ” = “・・・ みたいな感じでちまちま作ってオートフィルしてた訳です。

カラムがこの程度なら大した事無いですが、実際のテーブルはもっととんでもなく多い。しかも日付の時にはシリアル値になっちゃうからTEXTで変換しなきゃ~等で超面倒。

なのでこいつをサクッとやっつけようってのが今回のマクロ。ちなみにMySQL用です。

MakeUpdateSQL


コード実態↓コピペでそのまま使えます。

単純に文字列を&(アンパサンド)して結合させるとフリーズするのでテキスト作成して直書き方式にしました。毎度値にTrim掛けてるのは数値型だと前後にスペースが出来てしまう為それの削除用。

ルールとして最後の行はWHERE句にしてるのと、日付カラムに対して空白UPDATEするとSQL投げた際にエラーになるので、予め1900/01/01等のそのカラムの初期値で埋めとく事。

実際の動き

以前上記記事で作成した自分用のメニューの中に突っ込んで使って見た

INSERTしたい場合でもループの中身ちょっと変えるだけで応用効くはずなので、是非活用してみて下さい~(ᵔᴥᵔ)

コメント