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に変更する必要があります。


コメント

アクセス数の多い投稿

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

NEC Aterm WX5400HP をセットアップ

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

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

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

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

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

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

Microsoft Flight Simulator (2020)のPS4コントローラー設定

Amazon Prime Videoで4K UHD映画を検索する方法