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に変更する必要があります。
 
 
 
 
 
コメント
コメントを投稿