SQL文をVBAの文字列に変換するVBAコード
SQL文をVBAで実行する際の文字列に変換するVBAコードを書いてみました。
VBAでSQLを利用する際には、とりあえずデータベース側のテスト環境でSQL文を実行してみて、問題なく動作するようになったらVBAに移植しています。
その際に、VBAの文字列に直すのですが、これをやっていると結構間違えてSQLのエラーが発生してしまい、時間を取られます。
いい加減嫌になったので、SQL文を自動的にVBAの文字列に変換する関数を作ってみました。
パラーメーターにSQL文を渡せば、VBAで使える文字列として返します。
改行コードの "_" は24個までしか使えないので、それにも対応しています。48行目の動作は未確認です。多分動くと思いますが。
Public Function gSQLtoVBA(ByVal uSQL As String) As String Dim uSQLArray Dim i As Long Dim uCode As String
uSQLArray = Split(uSQL, vbCrLf)
For i = LBound(uSQLArray) To UBound(uSQLArray) Select Case i Case 0 '1行目 uCode = "uSQL = """ & uSQLArray(i) & " "" & _" & vbCrLf Case UBound(uSQLArray) '最終行
uCode = uCode & " """ & uSQLArray(i) & " """ & vbCrLf Case 23, 47, 71, 95 uCode = uCode & " """ & uSQLArray(i) & " "" " & vbCrLf
Case 24, 48, 72, 96 uCode = uCode & "uSQL = uSQL & """ & uSQLArray(i) & " "" & _" & vbCrLf
Case Else uCode = uCode & " """ & uSQLArray(i) & " "" & _" & vbCrLf
End Select Next
gSQLtoVBA = uCodeEnd Function
次の画面は、フォームの上のテキストボックスにSQLを貼り付けると、上の関数で処理した結果を下のテキストボックスに表示するようにしたものです。
サクッと移植することができました。
もっと早く作るべきでした。
フォームを使わずセルで代用する場合には、split の区切り文字や、連結自の改行文字を vbLfに変更する必要があります。
コメント
コメントを投稿