###ctrl+Hで出来た検索が、VBAではできない。
タイトル通りです。
私はある文字列を置換したく、ctrl+Hで処理を書きました。しかし、文字列が長すぎたために、上手くいかず、それならVBAでやろうということになりました。
ですが、VBAの検索にその文字列を入れてもなぜか検索が引っかかりませんでした。(もちろん「"」のダブルクオーテーションの処理はしましたが・・・)
以下にコードを記します。
検索したい文字列
<string name=“base0”></string> <string name=“ude0”></string>
(同じような文字が続くがここでは省略。以下同様)
ctrl+Hで検索できた文字
\<string name=“base([0-9]{1,3})”\>\</string\>^013\<string name=“ude([0-9]{1,3})”\>\</string\>
上の文字を移植したが、検索したい文字列を検索できないコード
Sub gazouireru() With Selection.Find .Text = "\<string name=""base([0-9]{1,3})""\>\</string\>^013\<string name=“ude([0-9]{1,3})”\>\</string\>" .MatchFuzzy = False .MatchWildcards = True .Execute End With With Selection.Range .Text = "置換したい文字列" End With End Sub
訂正です。
「Ctrl+Hで上手くいかなかった検索」について。
「Ctrl+Hで上手くいかなかった置換」の誤りでした。検索はできても、置換ができなかったので(文字列が長すぎたため)、このような記述になってしまいました。
また、ダブルクオーテーションについて。これは完全に私の不注意でした。
IDEとwordとマクロとteratailで文字列を操作していたので、
いつの間に変わってしまったのだと思います。
ダブルクオーテーションは全角“”
に統一します。
<string name=“base0”></string>
<string name=“ude0”></string>
ダブルクオーテーションに気をつけつつ、もう一度文書確認、
Ctrl+H、さらにVBAを試してみました。
以下に結果を記します。
Ctrl+H 効いた
検索したい文字
<string name=“base0”></string>
<string name=“ude0”></string>
検索する文字
\<string name=“base([0-9]{1,3})”\>\</string\>
^013\<string name=“ude([0-9]{1,3})”\>\</string\>
VBA ここで問題が起きました。
というのも検索の効いた文字列をコピペしたのち、ダブルクオーテーションを
避けるよう半角ダブルクオーテーション"
を入力したのですが、
それをやると構文エラーとなってしまうからです。
エラー
.text="\<string name="\<string name="“base([0-9]{1,3})"”\>\</string\> ^013\<string name="“ude([0-9]{1,3})"”\>\</string\>"
それならばと“
のよこに“
。”
のよこに”
を入力して試したのですが、これも構文エラーとなりました。
つまり、この問題の解決方法は“
及び、”
という全角ダブルクオーテーションを避ける
にはなにをすればいいのか、これに帰着するということだと思います。
また、回答者様のCtrlで検索できないのは、機種の違いなのかな?と思いました。
それは検索したい文字と、検索する文字は、以前と同じだからです。
私は2016を使っています・・・
回答2件
あなたの回答
tips
プレビュー