shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Word VBA】「このメンバー識別子は既にオブジェクトモジュールの中に存在しています」エラーの原因と対応例

Word VBAを使用する際に「このメンバー識別子は既にオブジェクトモジュールの中に存在しています」というエラーの原因と対応例の備忘録です。

内容:

動作確認のWordは「Microsoft® Word for Microsoft 365 MSO」(バージョン2502)です。

エラーの内容

マクロを実行しようとすると、「コンパイルエラー:このメンバー識別子は既にオブジェクトモジュールの中に存在しています」というエラーです。

コンパイルエラーが発生している

「このメンバー識別子は既にオブジェクトモジュールの中に存在しています」のエラー

メンバー識別子とは?

メンバー識別子とは、VBAにおける変数、定数、関数、プロパティ、メソッドなど、オブジェクトやモジュール内でそれぞれを識別するための名前のことです。これにより、プログラム内で特定の要素を参照し、操作することが可能になります。

宣言されたすべての要素には名前が付いています。これは識別子とも呼ばれ、コードが参照するために使用するものです。

宣言された要素の名前 - Visual Basic | Microsoft Learn

つまり、前述のエラーメッセージは、何かしらの名前が既に他の部分で利用されていて、重複しているということです。

エラーの対応としては、同じモジュール内で名前が重複していないかを確認します。

対応例

原因は名前の重複ですが、見つからない時もあると思います。

その場合は、名前を変更するなど試してみます。

なお、WordのVBAの場合で、Normalテンプレートの「ThisDocument」と個別ファイルの「ThisDocument」に同じマクロ名のコードを記載があるとき、前述のとおり「このメンバー識別子は既にオブジェクトモジュールの中に存在しています」エラーが発生しました。

意図的でない場合は、Normalテンプレートの「標準モジュール」内にコードを記載した方が良いです。

以上、WordのVBAで、コメントで選択された文章を修正するマクロの動作確認でした。