【Wordマクロ】ワードのマクロで「Replace」が使えないときの解決法

テーマはワードのマクロでエラーになった話。 日常の話

ワードのマクロ内でReplaceがエラーになる。

Wordのマクロを使おうとしてトラブった話です。

WordのVBAのコード内でReplaceを使おうとするとエラーになった話です。

「ワード、マクロ、Replace」や「Word、マクロ、文字列、置換」などで検索すると、ワードの文書本体の文章を置換する方法が検索で引っかかり、マクロのコード内で文字列を置換するというのが見つからず苦労しました。

Excelのマクロに貼り付けるとちゃんと動くのにWordのマクロに貼り付けるとエラーになったのでなかなか解決できませんでした。

簡単な文字列の置換ができない。

Sub ReplaceString()
    Dim myString As String
    myString = "置換前の文字列"
    myString = Replace(myString, "置換前の", "置換後の") '置換実行
    MsgBox myString
End Sub

Excelのマクロで上のコードを実行すると、メッセージボックスに「置換後の文字列」と出力され、文字列が置換されます。

しかし、ワードのVBAに貼り付けると、下のコードのように「Replace」の「R」が小文字の「r」となってしまい、「replace」となっています。

Sub ReplaceString()
    Dim myString As String
    myString = "置換前の文字列"
    myString = replace(myString, "置換前の", "置換後の") '置換実行
    MsgBox myString
End Sub

そして、このコードを実行すると、「コンパイル エラー」「引数の数が一致していません。または不正なプロパティを指定しています。」というエラーになってしまいました。

Google先生で検索してみますが、ワードマクロでの「Replace」や「置換」はワードの文書内の置換ばかりヒットしてワードのVBAのコード内での文字列の置換はヒットしません。

おそらく、エラーは、ワード内の文書を置換するためのワードのマクロの「replace」がいたずらしているんだろうと思われます。

最後の砦、ChatGPT。

ChatGPTに聞いてみますが、なかなか答えに辿りつけませんでしたが、「ReplaceのRが小文字の r になってしまいます」と聞いたところ、解決しました。

「Replace()メソッドを呼び出す際に、 R が r と小文字になってしまっているため、VBAがReplace メソッドを認識できなくなっているためです。正しいメソッド名で呼び出すように修正する必要があります。」

ということのようです。そして、

「Replace()メソッドを呼び出す前に、VBA.を付けることで正しいメソッド名を明示的に指定しています。これにより、VBAは Replace()メソッドを正しく認識し、実行することができます。」

とのことでした。

ちゃんと動いた修正後のマクロのコード

replaceを「VBA.Replace」にしなさいというChatGPTのご指導でしたが、入力してみると、「VBA.replace」とRは小文字になってしまいます。

でも、これで実行するとちゃんと動きました。

Sub ReplaceString()
    Dim myString As String
    myString = "置換前の文字列"
    myString = VBA.replace(myString, "置換前の", "置換後の") '置換実行
    MsgBox myString
End Sub

実行すると、「置換後の文字列」となり、正しく置換ができました。

プログラミングについては、ChatGPT先生が優秀ですね。

マクロが初めてでも使えるExcelでChatGPT-3.5に質問するVBAマクロ(64bit環境対応)|ふーた
ExcelでChatGPT3.5へ質問するマクロを作成しました 話題のChatGPTを使うVBAのコードについて書いています。 この記事は64bitのWindows11、32bitのExcel2019での動作の確認によっています。 (追記 2023/11/02)64bitExcelではエラーとなっていましたが、対応...

Excelのマクロは多くのブログやサイトで紹介されていてGoogleで検索すれば大抵は解決しますが、Wordのマクロはやっぱり扱っているサイト数が少ないですね。

コメント

タイトルとURLをコピーしました