現在オフラインです。再接続するためにインターネットの接続を待っています

[HOW TO] Microsoft Word の Visual Basic Editor で、プロジェクトへの誤った参照のチェックおよび削除を行う方法

この記事は、以前は次の ID で公開されていました: JP308340
概要
Microsoft Word の Visual Basic Editor で、オブジェクト ライブラリ、または外部文書あるいはテンプレート内のコードへの参照を作成できます。これによって、同じプロジェクトに記述されている場合と同様に外部プロシージャを呼び出すことができます。ただし、参照先のファイルが移動されたり破損したりすると、問題が起きる場合があります。マクロ記憶領域のエラーが発生し、[参照設定] ダイアログ ボックスにアクセスできなくなることがあります。

この資料では、他の Microsoft Visual Basic for Applications (VBA) ブロジェクトへの参照を作成する方法、参照が正しいことを確認する方法、および誤った参照をプログラムによって削除する方法について説明しています。

前提条件として必要な知識は次のとおりです。
  • 基本的な VB/VBA プログラミングの知識
  • Microsoft Office についての基礎知識
  • エクスプローラについての知識
この資料では、Visual Basic Editor で以下の操作を行う方法を説明します。
  • カスタム VBA プロジェクトへの独自の参照の作成
  • 参照が存在することを確認するためのコードの記述
  • 誤った参照を削除するためのコードの記述
  • 参照をもう一度追加するためのコードの記述
先頭に戻る

プロジェクトのセキュリティ アクセス許可を設定する

  1. Microsoft Word で、[ツール] メニューの [マクロ] をポイントします。次に、[セキュリティ] をクリックして [セキュリティ] ダイアログ ボックスを表示します。
  2. [セキュリティ レベル] タブでセキュリティ レベルを [中] に設定し、マクロを有効にするかどうかを選択できるようにします。
  3. [信頼のおける発行元] タブの [Visual Basic プロジェクトへのアクセスを信頼する] チェック ボックスがオンになっていることを確認します。オンにすることにより、作成するプロジェクトで VBA コードを使用できます。
  4. [OK] をクリックします。
先頭に戻る

プロジェクトへの参照を作成する

プロシージャを含むプロジェクトを作成し、次に新しい VBA プロジェクトからそのプロジェクトへの参照を作成します。

ライブラリ ファイルを作成するには、以下の手順を実行します。
  1. Microsoft Word で新しい文書を作成し、それを次の手順でテンプレートとして保存します。
    1. [ファイル] メニューの [名前を付けて保存] をクリックし、[名前を付けて保存] ダイアログ ボックスを表示します。
    2. [ファイル名] ボックスをRefme に変更します。
    3. [ファイルの種類] ボックスを [文書テンプレート (*.dot)] に変更します。
    4. テンプレートを C:\TestFiles フォルダ (このフォルダが存在しない場合は作成します) に保存します。
  2. [ツール] メニューの [マクロ] をポイントし、[Visual Basic Editor] をクリックします。または、Alt + F11 キーを押します。Visual Basic Editor が起動します。
  3. プロジェクト エクスプローラで、[TemplateProject (Refme)] をクリックします。[挿入] メニューの [標準モジュール] をクリックして、新しいモジュール "Module1" をプロジェクトに追加します。
  4. コード ウィンドウで、Module1 のコードを次のとおり入力します。
    Public Sub CallMe()  Msgbox "Hello World!"End Sub
  5. Sub プロシージャをクリックし、[実行] メニューの [Sub/ユーザー フォームの実行] をクリックします。"Hello World!" メッセージ ボックスが表示されます。このメッセージ ボックスを閉じます。
  6. [表示] メニューの [Microsoft Word (ALT+F11)] をクリックして Word に戻ります。
  7. Word でテンプレート ファイルを保存して閉じます。
参照を作成するには、以下の手順を実行します。
  1. Word で新しい文書を作成し、それに "Myproj.doc" と名前を付けて "C:\TestFiles" フォルダに保存します。
  2. Visual Basic Editor を起動します (または Alt + F11 キーを押します)。プロジェクト エクスプローラで [Project (Myproj)] をクリックします。
  3. 以下の手順に従って、Refme テンプレートへの参照を作成します。
    1. [ツール] メニューの [参照設定] をクリックします。
    2. [参照設定] ダイアログ ボックスの [参照] をクリックします。
    3. [ファイルの参照] ダイアログ ボックスで、[ファイルの種類] の [Word 文書 (*.doc; *.dot)] をクリックします。
    4. "C:\TestFiles" フォルダの Refme テンプレートをクリックします。
    5. [開く] をクリックして、[参照設定] ダイアログ ボックスに戻ります。
    6. [OK] をクリックして Visual Basic Editor に戻ります。
  4. プロジェクト エクスプローラで [Project (Myproj)] を展開します。[参照設定] を展開し、[参照先 Refme.dot] が表示されていることを確認します。
  5. [挿入] メニューの [標準モジュール] をクリックして、新しいモジュールをブロジェクトに挿入します。CallMe プロシージャを呼び出すためのモジュールのコードを次のとおり記述します。
    Public Sub Test()  Call CallMeEnd Sub
  6. プロシージャをテストして、正しく機能することを確認します。次に Word に戻ります。
  7. 文書ファイルを保存して閉じます。Word を終了します。
先頭に戻る

プロジェクトへの参照をプログラムによってチェックする

ここでは、参照を故意に中断し、作成した参照が正確であることを確認します。

参照を中断するには、以下の手順を実行します。
  1. エクスプローラ ([スタート] ボタンを右クリックし、表示されるショートカット メニューの [エクスプローラ] をクリックします) で、Refme.dot テンプレートの名前を "Refme.old" に変更します。変更するには、Refme.dot を右クリックし、表示されるショートカット メニューの [名前の変更] をクリックします。次に refme.old と入力して、Enter キーを押します。
  2. Word に戻り、文書 "Myproj.doc" を再び開きます。
  3. セキュリティ レベルが中に設定されているため、この文書に含まれるマクロを有効にするかどうかをたずねられます。[マクロを有効にする] をクリックしてください。
  4. Visual Basic Editor を起動します (Alt + F11 キーを押します)。Test プロシージャを実行し、次のコンパイル エラー メッセージが表示されたら [OK] をクリックします。
    プロジェクトまたはライブラリが見つかりません。
  5. この時点では中断モードになっています (Sub 行が黄色で塗りつぶされています)。[実行] メニューの [リセット] をクリックして、デザイン モードに戻ります。
  6. [ツール] メニューの [参照設定] をクリックし、[参照設定] ダイアログ ボックスを開きます。Refme.dot が "参照不可" になっています。
  7. [キャンセル] をクリックして [参照設定] ダイアログ ボックスを閉じます。
参照不可の参照があるかどうかをプログラムによってチェックするには、以下の手順を実行します。
  1. プロジェクト エクスプローラで [Project (Myproj)] をクリックします。
  2. [ツール] メニューの [参照設定] をクリックし、Microsoft Visual Basic for Applications Extensibility 5.3 ライブラリへの参照を追加します。このライブラリには VBA プロジェクトを参照するオブジェクトが含まれます。
  3. [OK] をクリックする前に、新しい参照が "参照不可" の参照より上に追加されるようにします。矢印を数回クリックして優先順位を変更し、新しい参照を "参照不可" の参照より上に移動します。次に、[OK] をクリックします。
  4. モジュールに Sub プロシージャ "CheckReference" を作成し、次のコードを記述します。
    Sub CheckReference()   Dim vbProj As VBProject ' これは作成された VBA プロジェクトを参照します。   Dim chkRef As Reference ' 参照。     ' アクティブな文書の VBA プロジェクトを参照します。   Set vbProj = ActiveDocument.VBProject   ' [参照設定] ダイアログ ボックスでチェック マークが付いている参照をチェックします。   For Each chkRef In vbProj.References        ' 参照が中断されている場合は、その名前をイミディエイト ウィンドウに表示します。      If chkRef.IsBroken Then         Debug.Print chkRef.Name      End If   NextEnd Sub
  5. [表示] メニューの [イミディエイト ウィンドウ (CTRL+G)] をクリックして、イミディエイト ウィンドウを開きます。
  6. CheckReference Sub プロシージャを実行します。ファイルの名前と場所がイミディエイト ウィンドウに表示されます。
先頭に戻る

プロジェクトへの参照を削除して復元する

ここでは、参照をプログラムによって削除して復元する方法について説明します。

参照不可になっている参照を削除するには、以下の手順を実行します。
  1. CheckReference Sub プロシージャの Debug.Print ステートメントを次のとおり変更します。これで、参照不可の参照がプロジェクトから削除されます。
       vbProj.References.Remove chkRef
  2. CheckReference プロシージャを実行します。
  3. [ツール] メニューの [参照設定] をクリックし、[参照設定] ダイアログ ボックスを開きます。このダイアログ ボックスで、参照が削除されたことを確認します。
参照をもう一度追加して元に戻すには、以下の手順を実行します。
  1. エクスプローラで、Refme.old の名前を "Refme.dot" に戻します。
  2. Word の Visual Basic Editor で Myproj プロジェクトに戻ります。
  3. "AddReference" という名前の新しい Sub プロシージャを次のように記述します。
    Sub AddReference()   Dim vbProj as VBProject   Set vbProj = ActiveDocument.VBProject   vbProj.References.AddFromFile "C:\TestFiles\Refme.dot"End Sub
  4. AddReference プロシージャを実行します。
  5. Refme.dot への参照が復元されたことを確認します。参照を表示するには、プロジェクト エクスプローラを使用するか、[ツール] メニューの [参照設定] をクリックします。
先頭に戻る

トラブルシューティング

  • アプリケーションのネイティブなファイルへの参照を作成する場合、ネイティブなファイルの拡張子を維持してください。そうでないと、参照を使用しようとしたときに問題が発生することがあります。発生する問題を確認するには、この資料の前述の使用例で Refme.dot ファイルの代わりに Refme.old ファイルへの参照を作成してみてください。
  • 登録済みのコンポーネントを使用している場合、GUID 参照をプロジェクトに追加することができます。追加するには AddFromGUID メソッドを使用します。
先頭に戻る










関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 308340 (最終更新日 2002-03-04) をもとに作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号:308340 - 最終更新日: 03/04/2002 13:54:00 - リビジョン: 1.0

  • Microsoft Word 2002 Standard Edition
  • kbhowto kbhowtomaster jptrf KB308340
フィードバック
ipt>"); /ms.js" '="">