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


コメント

アクセス数の多い投稿

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

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

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

オカムラ家具のOAチェアー、コンテッサを分解清掃

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

Excelのテーブルに行や列を挿入する際のエラー

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

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

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

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