Sub 英数字引用符付加()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "<[a-zA-Z]{1,10}[0-9]{1,10}>"
.Replacement.Text = """^&"""
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
しかし翌日になると、必ず次のエラーメッセージが出て機能しなくなります。
「実行時エラー'4664'
MatchWildcardsとMatchSoundsLike、MatchAllWordForms、MatchFuzzy は同時にTrueにすることはできません。」
なぜ翌日になるとエラーになるのか、どうすれば解決できるのか、教えていただきたいのですが...。よろしくお願いいたします。
無理やりですが
エラーを読むと、検索時一番上と下の3つは同時に選択できないので
MatchWildcards(ワイルドカードの使用)
MatchAllWordForms(英単語の異なる活用形も検索)
MatchSoundsLike(英語のあいまい検索 だったと思う)
MatchFuzzy(日本語のあいまい検索 だったと思う)
強制的に選択しなければできると思います。
Sub 英数字引用符付加改() Selection.Find.ClearFormatting With Selection.Find .Text = "<[a-zA-Z]{1,10}[0-9]{1,10}>" .Replacement.Text = """^&""" .Forward = True .Wrap = wdFindContinue .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
> なぜ翌日になるとエラーになるのか、
すみません、わかりません。
推測でしかありませんが
ログインしなおしたり、別の人がWordを使ったりなどして
Wordの設定が変わっているのではないかと想像しています。
私が作成したVBAも明日動かかなかったら、
その時修正します。
マクロ記録で得られた、上記のFindというオブジェクトは、Wordの[検索と置換]ダイアログボックスと連動しています。
https://msdn.microsoft.com/ja-jp/vba/word-vba/articles/find-object-word
そのため、例えば[検索と置換]ダイアログボックスで「ワイルドカードを使用する」を選択すると、
MatchWildcards=True
MatchSoundsLike=False
MatchAllWordForms=False
MatchFuzzy=False
MatchWildcards=False
MatchSoundsLike=False
MatchAllWordForms=False
MatchFuzzy=True
MatchWildcards=True MatchSoundsLike=False MatchAllWordForms=False MatchFuzzy=True
ご丁寧な回答ありがとうございました。
今ではようやく私の困難の原因を理解することができるようになりました。教えていただいたせっていで問題も解決いたしました。佐渡、御礼申し上げます。
24時間たちました。
2017/10/31 20:43:17私の手元の昨日保存したマクロは昨日と同じ動作をしましたので、
matspatさんのところでエラーが出るのであれば
もっと詳しく情報を書いてください。
回答、ありがとうございました。
2017/11/01 11:51:30いただいたヒントのように修正しましたところ、翌日になってもきちんと動作しました。ありがとうございました。
もっと早く事後報告をしたかったのですが、どこにそれを投稿すればよいのか分からず、今日にいたってしまいました。お緩いください。
その後、私のエラーの原因を調べていて判明したのは、Selectionに対する設定条件は、Wordを閉じるとご破算になってしまい、その後にWordを立ち上げると、MatchFuzzyはデフォルトでTrueに設定され、WildCards=Trueとかち合ってエラーになる、とのことでした。ご報告申し上げます。