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 = uCode
End Function


次の画面は、フォームの上のテキストボックスにSQLを貼り付けると、上の関数で処理した結果を下のテキストボックスに表示するようにしたものです。


サクッと移植することができました。

もっと早く作るべきでした。


フォームを使わずセルで代用する場合には、split の区切り文字や、連結自の改行文字を vbLfに変更する必要があります。


コメント

アクセス数の多い投稿

セキュリティ対策ソフトのノートンが詐欺ソフトまがいになってしまってショック

Windows セキュリティーのビックリマークが消えない

ZIPファイルを開こうとすると、展開を完了できません、と言われる

突然滅茶苦茶遅くなったPCがWindows Updateのキャッシュクリアで復活

Power Automate Desktopでブラウザでダウンロードしたファイルを処理する

NEC Aterm WX5400HP をセットアップ

Excel 2019 クエリが原因で日本語入力の一文字目が勝手に確定する

Excel VBAからODBCを使ってデータを簡単に取得する

Teamsで日本語入力すると左上に変換ウィンドウが出る

ChatGPTが日本語からVBAのコードを生成できてたまげる