18

ドキュメントに ActiveX コントロールがある場合とない場合で、テンプレート ファイルMeの VBA コードのキーワードの動作が異なることに気付きました。

  • ActiveX コントロールを含むドキュメント:Meテンプレートから作成された新しいファイルを参照します。
  • ActiveX コントロールのないドキュメント:Me新しいファイルの代わりにテンプレートを参照します。

この奇妙な動作を示すために、2 つのサンプル ファイルを作成しました。

両方のファイルは同一です。唯一の違いは、一方にはボタンがあり、もう一方にはありません。両方のファイルの VBA コードは次のとおりです。

Private Sub Document_New()
    Selection.TypeText "Me keyword is referencing """ & Me.Name & """."
End Sub

これらのテンプレートから新しいファイルを作成すると、結果が異なることがわかります。

WithActiveX.dotm コンテンツは

Me キーワードは「Document1」を参照しています。<-- 上記のコードによって生成された文字列

一方、WithoutActiveX.dotm コンテンツは

Me キーワードは「WithoutActiveX.dotm」を参照しています。<-- 上記のコードによって生成された文字列

いくつかのテストを行って、不一致の原因は ActiveX コントロールの存在であると結論付けました (コントロールに関連付けられたコードはなく、単にドキュメントに存在するだけです)。

これは仕様によるものですか、それとも単なるバグですか?

EDIT 2017-06-13 : ここで説明されているバグは部分的に修正されたようですが、まだ再現可能です。これらのテンプレートのいずれかを使用して新しいドキュメント (空白のドキュメントなど) を作成する前に、Word のインスタンスが開かれている場合にのみ発生します。

4

1 に答える 1

1

それはバグです。

MSDNによると:

Meは、コードが実行されているクラスの特定のインスタンスを参照する方法を提供します。

私にとって、これは常に新しいドキュメントでなければならないことを意味します。テンプレート内のコードを誤って実行していないことを確認してください。

ソース: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/me-keyword

于 2018-08-02T20:54:02.793 に答える