VBAで「”」(ダブルクォーテーション)は、これで括られた文字列はVBAコードではないのでそのまま出力せよという意味を持ちます。この「”」自身を文字列として表示したい場合はエスケープシーケンスで対応するわけですが、VBAではまさかのエスケープ文字も「”」です。
つまり「”」だけを文字列として出力したければ「” ” ” ”」というコードになります。
両端が文字列括り、2つめがエスケープ文字、3つ目が実際の表示文字です。
” ” ” ”
半端なくわかりずらいです。
Pythonでは「”」は「’」による代替が許されるので「’ ” ’」で同じことが出来ます。文字列内に使用するクォーテーション記号の種類によって文字列括りの記号を変えるのはよくやる手法です。VBAではこれが出来ません。
このためHTMLなどの「”」が入り乱れる文字列をVBAで出力しようとすると大変です。途中に変数を組み込もうものなら、もはや暗号のようなコードになってしまいます。
たとえば<a>タグを出力したいなら
Dim url, elem
url = "https://expy-style.net"
elem = "<a href=""" & url & """ class=""item"" id=""home"">" & url & "</a>"
というようなありさまです。
ちなみにPythonだとシングルクォート括りと変数展開を利用すれば
url = 'https://expy-style.net'
elem = f'<a href="{url}" class="item" id="home">{url}</a>'
とエスケープなしでほぼ原型のまま記述できます。美しいですね。
さて、一見、複雑怪奇なこの「”」によるエスケープですが、実は極めて単純な法則のうえに成り立っています。人間が目で見て「”」をエスケープしていくと混乱してしまいますが、コンピューターが法則に従い処理していくのは造作も無いことです。やらせましょう。
ということで、Javascriptで変換ツールを作成しました。
利用方法
1.ページ下部のフォームに表示したい文字列を入力します。
文字括りのダブルクォーテーションは含めません。純粋に文字列として表示したい部分だけ。
変数を含める場合は{}で括ってください。たとえば<a href=”{url}”>というように。
Pythonのf-stringと同じ要領です。なお逆に”{}”は文字として含めることはできません。仕様です。決してそれをエスケープする処理を書くのが面倒だからではありません。
変数は途中に含む場合だけ正しく変換されます。最初や最後にするとおかしくなります。それは自分で後からくっつければいいじゃんと。決してその処理を別個に書くのが面倒だからではありません。
2.GENERATE~ボタンを押すと、VBAのエスケープシーケンス入り文字列を生成します。
文字列括りのダブルクォーテーションが付加されます。
3.COPY TO~ボタンで生成した文字列をクリップボードへコピーできます。VBEにペーストしてご利用ください。
VBAエスケープ文字列生成
ボタンを押下した時点で注意事項に同意したものとみなします。