Office 実行時のトラブルシューティング
更新 : 2007 年 11 月
ソリューションのビルド中に Microsoft Office からエラー メッセージが表示される場合、またはエンド ユーザーからエラー メッセージが報告される場合は、次のような一般的な問題のいずれかが原因であると考えられます。
共通言語ランタイムまたは Microsoft .NET Framework が読み込まれない
この問題が発生した場合、次のエラー メッセージが表示されます。
<アプリケーション> によって共通言語ランタイムを読み込めませんでした。詳細については管理者に問い合わせてください。
エンド ユーザーのコンピュータにある Microsoft .NET Framework のバージョンは、ソリューション開発に使用されたコンピュータと同じバージョン、またはそれ以降のバージョンであることが必要です。.NET Framework および共通言語ランタイムの詳細については、Microsoft .NET Framework Downloads ページを参照してください。
カスタム マクロが共通言語ランタイムを必要とする
この問題が発生した場合、次のエラー メッセージが表示されます。
このドキュメントのカスタム マクロを使用するには、共通言語ランタイム バージョン 2.0 がインストールされている必要があります。詳細については管理者に問い合わせてください。
このメッセージのカスタム マクロとは、マネージ アセンブリのことです。エンド ユーザーのコンピュータに、ソリューションと互換性のない Microsoft .NET Framework のバージョンがインストールされている可能性があります。ソリューション開発に使用したコンピュータと同じバージョン、またはそれ以降のバージョンの Microsoft .NET Framework を、エンド ユーザーのコンピュータにインストールする必要があります。新しいバージョンは既存バージョンと並行してインストールできます。.NET Framework および共通言語ランタイムの詳細については、Microsoft .NET Framework Downloads ページを参照してください。
セキュリティ ポリシーがアセンブリの実行を許可しない
この問題が発生した場合、次のエラー メッセージが表示されます。
現在の .NET セキュリティ ポリシーでは、<assembly> をフォルダ <path> から実行できません。お使いのコンピュータのセキュリティ ポリシーを変更しないでください。.NET セキュリティ ポリシーは、管理者、またはカスタム マクロを作成した開発者によって制御されています。ただし、ドキュメントを編集、保存することはできます。詳細については管理者、またはこのドキュメントの作成者に問い合わせてください。
このメッセージのカスタム マクロとは、マネージ アセンブリのことです。アセンブリに信頼がなく、有害である可能性があります。アセンブリの安全性が確実な場合は、アセンブリを実行する前に、ユーザーの .NET セキュリティ ポリシーでアセンブリに完全な信頼を与える必要があります。詳細については、「方法 : フォルダおよびアセンブリにアクセス許可を付与する (2003 システム)」を参照してください。
セキュリティ ポリシーがアセンブリの読み込みをドキュメントに許可しない
この問題が発生した場合、次のエラー メッセージが表示されます。
現在の .NET セキュリティ ポリシーでは、<document> にカスタム マクロを読み込むことはできません。お使いのコンピュータのセキュリティ ポリシーを変更しないでください。.NET セキュリティ ポリシーは、管理者、またはカスタム マクロを作成した開発者によって制御されています。ただし、ドキュメントを編集、保存することはできます。詳細については管理者、またはこのドキュメントの作成者に問い合わせてください。
このメッセージのカスタム マクロとは、マネージ アセンブリのことです。主な原因として、ドキュメントが信頼関係のない場所または電子メールの添付から開かれたため、有害である可能性があることが考えられます。ドキュメントの安全性が確実な場合は、ドキュメントをユーザーのコンピュータに保存してから開きます。コンピュータに保存されたドキュメントは、My Computer ゾーンに入り、完全な信頼を得ます。電子メールに添付されたドキュメントの場合は、インターネット ゾーンに存在し、完全な信頼は得られません。
もう 1 つの原因として、正しいバージョンの Microsoft .NET Framework がコンピュータ上にかつて存在し、その後ソリューション実行前に削除された可能性があることが考えられます。ユーザーが .NET Framework の 2 つのバージョンを並行してインストールし、後に一方のバージョンを削除した場合、.NET Framework の必要なバージョンがインストールされていないことを知らせるメッセージの代わりに、このセキュリティ メッセージが表示されます。ソリューションを実行するには、.NET Framework をインストールする必要があります。
詳細については、「Office ソリューションの実行に必要なセキュリティ条件 (2003 システム)」を参照してください。
プロジェクト アセンブリに完全な信頼が与えられているとセキュリティ例外が発生する
メイン プロジェクト アセンブリに完全な信頼が与えられていることが確実なときにセキュリティ例外が発生した場合、参照アセンブリが実行に必要なアクセス許可を持たずにアクションを実行しようとしていると考えられます。参照アセンブリに、手動で必要なアクセス許可を与える必要があります。
開発用コンピュータでプロジェクトをビルドすると、プロジェクトの出力フォルダ内のすべての参照アセンブリに実行するためのアクセス許可が与えられます。完全な信頼は、メイン プロジェクト アセンブリだけに自動的に与えられます。
アセンブリが見つからないか、または読み込むことができない
この問題が発生した場合、次のエラー メッセージが表示されます。
カスタマイズ アセンブリが見つからないか、読み込めませんでした。ただし、ドキュメントを編集、保存することはできます。詳細については管理者、またはこのドキュメントの作成者に問い合わせてください。
このエラーを解決するには、次の方法を試してください。
ユーザーがアセンブリ位置にアクセスできること、また、指名したアセンブリが存在していることを確認します。詳細については、「Office ソリューションのアセンブリの概要」を参照してください。
アセンブリがある場合は、Word または Excel が、Visual Studio Tools for Office ランタイムと互換性がないバージョンの .NET Framework 共通言語ランタイム (CLR) を明示的に読み込むカスタマイズ (アドイン、スマート タグ、スマート ドキュメントなど) を実行中でないかどうか確認します。この問題を解決するには、ソリューションが使用するランタイムと一致するバージョンの .NET Framework CLR を明示的に読み込むカスタマイズを無効にします。
実行中のアプリケーションが読み込むことができる .NET Framework CLR のインスタンスは 1 つだけです。カスタマイズによって、Word または Excel が旧バージョンの .NET Framework CLR を読み込む場合、Visual Studio Tools for Office ソリューションは読み込みに失敗します。
カスタマイズ アセンブリの未処理の例外がアセンブリの読み込みを妨げていないかどうかを確認します。デバッガを共通言語ランタイム例外で中断するように設定するか、[オプション] ダイアログ ボックスで [例外が AppDomain またはマネージ/ネイティブの境界を越える場合にブレークする (マネージのみ)] オプションを選択して、ソリューションをデバッグします。詳細については、「方法 : Office プロジェクトのエラーを処理する」および「[全般] ([オプション] ダイアログ ボックス - [デバッグ])」を参照してください。
アセンブリを初期化できない
この問題が発生した場合、次のエラー メッセージが表示されます。
<project> のカスタム マクロが正しく初期化されませんでした。ただし、ドキュメントを編集、保存することはできます。詳細については管理者、またはこのドキュメントの作成者に問い合わせてください。
このメッセージのカスタム マクロとは、マネージ アセンブリのことです。
このエラー メッセージには以下のようないくつかの原因があります。
主要 Office プロジェクト アセンブリは部分的に信頼されています。たとえば、コンピュータ レベルのセキュリティ ポリシーにイントラネット ゾーン アクセス許可だけを持つネットワーク共有にプロジェクトを作成した場合は、ユーザー レベルでプロジェクトに完全な信頼を与えても、このメッセージが表示されます。アセンブリ読み込み時にはセキュリティに関する警告は表示されませんが、コンピュータ レベルのポリシーの方が厳密性が高いため、アセンブリは、完全な信頼を必要とする Office オブジェクト モデルにアクセスするための必要な許可を得ることができず、初期化されません。ローカル コンピュータに保存されていないアセンブリを操作する場合、ネットワーク管理者は、コンピュータ レベルで完全な信頼を与える必要があります。詳細については、「Office ソリューションの実行に必要なセキュリティ条件 (2003 システム)」を参照してください。
参照を追加する前に、参照される COM コンポーネントのプライマリ相互運用機能アセンブリがグローバル アセンブリ キャッシュにインストールされていません。Visual Studio によって生成される相互運用機能アセンブリは、どんな場合でも完全に機能するとはいえず、またアセンブリは、グローバル アセンブリ キャッシュではなくプロジェクト ディレクトリに配置されます。
正しい相互運用機能アセンブリを参照するには
プロジェクト内で、Copy Local プロパテが True に設定された COM コンポーネント (Office アプリケーションなど) への参照をすべて検索します。
参照を右クリックし、ショートカット メニューの [削除] をクリックします。
[プログラムの追加と削除] を実行し、コンポーネントのプライマリ相互運用機能アセンブリをグローバル アセンブリ キャッシュにインストールします。詳細については、「方法 : Office のプライマリ相互運用機能アセンブリをインストールする」を参照してください。
Visual Studio でプロジェクトを開き、コンポーネントへの新しい参照を追加します。詳細については、「方法 : プライマリ相互運用機能アセンブリを利用して Office アプリケーションを使用する」を参照してください。
オフライン作業でアセンブリが使用できない
この状況が発生した場合、次のメッセージが表示されます。
<path> のカスタム マクロはオフラインで使用できません。オンライン接続して、このカスタマイズをダウンロードしてください。ただし、Internet Explorer などのほかに実行されているプログラムに影響がある可能性があります。
このメッセージのカスタム マクロとは、マネージ アセンブリのことです。このメッセージは、コンピュータがオフライン モードで、キャッシュにアセンブリのコピーが存在しないときに表示されます。オフラインで作業するには、次の条件が必要です。
アセンブリが Web サーバーに配置されていること。
アセンブリに、カスタム プロパティの HTTP または HTTPS パスを通じてアクセスしていること。
上記の条件に適合するアセンブリをキャッシュするには、オンライン モードで Office ドキュメントを開き、アセンブリのコピーを少なくとも 1 回はダウンロードする必要があります。これで、オフライン作業でアセンブリを使用できるようになります。詳細については、「Office ソリューションのオフライン モデル (2003 システム)」および「方法 : オフライン使用のドキュメントを配置する (2003 システム)」を参照してください。
コンピュータではオフライン モードとオンライン モードのいずれか一方しか利用できないため、他のプログラムが影響を受けることがあります。Internet Explorer の [ファイル] メニューの [オフライン作業] をクリックした場合、すべてのアプリケーションがオフラインになります。
アセンブリをオンラインで使用できない
この状況が発生した場合、次のメッセージが表示されます。
<path> のカスタム マクロはオンラインで使用できません。ローカル コピーは使用可能です。オフラインにしてキャッシュ コピーを使用してください。ただし、Internet Explorer などのほかに実行されているプログラムに影響がある可能性があります。
このメッセージのカスタム マクロとは、マネージ アセンブリのことです。このメッセージは、コンピュータがネットワークに接続されていないとき、つまりネットワークのダウン時にコンピュータがオンライン モードのときに表示されます。[OK] をクリックすると、コンピュータがオフライン モードになり、キャッシュされているアセンブリのコピーが使用されます。キャッシュされているアセンブリを使用できるようにするには、このダイアログ ボックスで [OK] をクリックするか、または Internet Explorer の [ファイル] メニューの [オフライン作業] をクリックして、コンピュータをオフライン モードに設定する必要があります。詳細については、「Office ソリューションのオフライン モデル (2003 システム)」および「方法 : オフライン使用のドキュメントを配置する (2003 システム)」を参照してください。
コンピュータではオフライン モードとオンライン モードのいずれか一方しか利用できないため、他のプログラムが影響を受けることがあります。コンピュータをオフライン モードに設定した場合、すべてのアプリケーションがオフラインになります。
アセンブリが読み込まれない
この問題が発生した場合、次のエラー メッセージが表示されます。
アセンブリ '<assemblyname>' から型 '<projectname>' を読み込めませんでした。
ソリューション コードを難読化した場合に、このメッセージが表示されることがあります。コードを難読化すると、すべてのクラスの名前が変更されます。ただし、マニフェストでは元のクラス名が参照されており、難読化ツールではマニフェストは変更されません。
このエラーを回避するには、ワークシート クラスおよびブック クラスの名前を、難読化ツールの名前変更対象外クラスのリストに追加します。
地域設定が原因で発生する Excel のメソッドでのエラー
エンド ユーザーの地域設定で選択されたロケールが、インストールされている Microsoft Office Excel 2003 の言語と一致しないと、Excel のメソッドやプロパティを呼び出したときに次のエラーが返される場合があります。
'System.Runtime.InteropServices.COMException' の初回例外が mscorlib.dll で発生しました。
追加情報 : HRESULT : 0x800A03EC の例外です。
または
'System.Runtime.InteropServices.COMException' の初回例外が ExcelProject.dll で発生しました。
追加情報 : 古いファイル形式または無効なタイプ ライブラリです。
この問題の解決方法の詳細については、「Office ソリューションのグローバリゼーションとローカリゼーション」を参照してください。
Office ドキュメントはエラーなしに開くが、コードが実行されない
コードが実行されず、エラー メッセージが表示されない原因として、以下のことが考えられます。
Office プライマリ相互運用機能アセンブリがグローバル アセンブリ キャッシュにインストールされていません。これは、.NET Framework がコンピュータにインストールされていないか、Office セットアップでアセンブリが [使用できません] とマークされているためです。
使用している Word または Excel のバージョンで、Visual Studio Tools for Office ソリューションがサポートされていません。エンド ユーザーが、Visual Studio Tools for Office をサポートするエディションの Microsoft Office 2003 の Word および Excel、またはそのいずれかをインストールする必要があります。詳細については、「方法 : Microsoft Office 2003 を対象とする開発用に Visual Studio Tools for Office をインストールする」を参照してください。
ドキュメントが HTTP または HTTPS の場所から開き、Windows エクスプローラで .doc または .xls ファイルの [同じウィンドウで開く] オプションがオンになっていません。このオプションは、ドキュメントが現在のウィンドウ内でホストされているか、別のウィンドウ内でホストされているかを判断するために Internet Explorer によって使用されます。ドキュメントが別のウィンドウ内でホストされている場合、カスタマイズは読み込まれず、実行されません。Word または Excel ドキュメントの [同じウィンドウで開く] オプションにアクセスするには、Windows エクスプローラを開き、[ツール] メニューの [フォルダ オプション] をクリックします。[ファイルの種類] タブで、ファイルの種類の一覧から [DOC] または [XLS] を選択し、[詳細設定] をクリックして、[同じウィンドウで開く] がオンになっていることを確認します。
同じコンピュータの Visual Studio で Word 文書プロジェクトが開いています。Visual Studio を閉じ、文書を再度開きます。
詳細については、「ドキュメント レベルのプロジェクトのデバッグ」を参照してください。
マクロ セキュリティが [高] に設定されているのにコードが実行される
マネージ コード拡張機能を使用して作成した Microsoft Office 2003 ソリューションは、エンド ユーザーの Office アプリケーションの [セキュリティ] 設定が [高] に設定されている場合でも実行されます。これは、マネージ アセンブリ コードのセキュリティが、Microsoft Office Word 2003 や Microsoft Office Excel 2003 ではなく、Microsoft .NET Framework によって管理されるためです。ただし、マネージ コード拡張機能が組み込まれた文書やブックを、アセンブリ コードを実行せずに開くにはいくつかの方法があります。詳細については、「方法 : コードを実行せずに Office ソリューションを開く」を参照してください。
モードレス フォームで未処理の例外が発生すると Excel および Word で予期しない終了が発生する
ユーザーがモードレス フォームでイベントを発生させた後に Excel または Word で予期しない終了が発生する場合、コード内に未処理の例外が発生する場所がないか調べる必要があります。エラー処理を追加して、データが失われないようにします。
Outlook アドインが読み込まれない、または使用不可である
Outlook アドインが正常に読み込まれない場合に確認する点としては、以下が考えられます。
Microsoft Office Outlook で予期しないエラーが発生したり、アドインの初期化中にエラーが発生したりする場合は、アドインが使用不可になっている可能性があります。詳細については、「方法 : 無効にされたアドインを再度有効にする」を参照してください。
Outlook アドインは、アドイン マニフェスト ファイルがアドイン アセンブリと同じディレクトリにないと読み込まれない場合があります。マニフェスト ファイルを別のディレクトリに配置する場合は、アドイン マニフェスト ファイルで asmv2:installFrom 要素の codebase 属性を更新して、アドイン アセンブリの場所を指定する必要があります。
Outlook で、Visual Studio Tools for Office ランタイムと互換性がないバージョンの .NET Framework 共通言語ランタイム (CLR) を明示的に読み込むアドインを実行している可能性があります。この問題を解決するには、互換性がないバージョンの .NET Framework を明示的に読み込むアドインを無効にします。
実行中のアプリケーションが読み込むことができる .NET Framework のインスタンスは 1 つだけです。アドインによって、Outlook が旧バージョンの .NET Framework を読み込む場合、Visual Studio Tools for Office を使用して作成されたアドインは読み込みに失敗します。
Visual Studio Tools for Office で詳細なエラー メッセージを表示し、すべてのアクションをログ ファイルに書き込む環境変数を設定することにより、トラブルシューティングの追加情報を取得できます。詳細については、「アプリケーション レベルのプロジェクトのデバッグ」を参照してください。
[COM アドイン] ダイアログ ボックスを使用して Outlook アドインをインストールできない
Visual Studio Tools for Office を使用して作成した Outlook アドインをインストールする場合は、[COM アドイン] ダイアログ ボックスは使用しないでください。Outlook プロジェクト テンプレートに含まれている配置プロジェクトを使用します。Outlook アドインは、Outlook の機能を拡張するために AddinLoader.dll というプロキシ .dll ファイルを使用します。このプロキシにより、マネージ アセンブリは COM をとおして Outlook と通信できるようになります。詳細については、「アプリケーション レベルのアドインの配置 (2003 システム)」を参照してください。
Outlook アドインでカスタム プロパティ ページを追加できない
Outlook アドインで、Outlook の [オプション] ダイアログ ボックスまたは Outlook フォルダの [プロパティ] ダイアログ ボックスにカスタム プロパティ ページを作成する場合、そのカスタム プロパティ ページを明示的に COM から参照できるようにする必要があります。既定では、アセンブリは COM からは参照できません。これを行わないと、アドインはカスタム プロパティ ページを作成できず、アドインのデバッグ時に COMException が発生します。
COM からカスタム プロパティ ページを参照できるようにするには、以下の 2 つの方法があります。
プロジェクト内のカスタム プロパティ ページを実装するクラスに ComVisibleAttribute を追加します。クラスに属性を追加する方法については、「属性の適用」を参照してください。
Visual Studio を使用してアドイン アセンブリ全体を COM から参照可能にします。
Visual Studio を使用してアドイン アセンブリを COM から参照可能にするには
Visual Studio のソリューション エクスプローラでプロジェクトを右クリックし、[プロパティ] をクリックします。
[アプリケーション] タブをクリックします。
[アセンブリ情報] をクリックします。
[アセンブリを COM 参照可能にする] チェック ボックスをオンにします。
[OK] をクリックします。
Outlook アドインで Quit イベントが発生しない
Outlook アドインで Microsoft.Office.Tools.Outlook.Application クラスの Quit イベントにイベント ハンドラを作成しても、このイベント ハンドラは実行されません。Visual Studio Tools for Office で作成したアドインを実行している Outlook のインスタンスを終了すると、アドインは、Quit イベントを受け取る前にアンロードされます。代わりの方法として、Outlook 終了時に実行するコードをプロジェクトの ThisAddIn_Shutdown イベント ハンドラに記述できます。詳細については、「2007 Microsoft Office アドイン プロジェクト テンプレート」および「2003 Microsoft Office アドイン プロジェクト テンプレート」を参照してください。
Close メソッドによって Word および Excel で予期しない終了が発生する
Excel の Workbook オブジェクトまたは Word の Document オブジェクトの Close メソッドをモードレス フォームから呼び出すと、アプリケーションで予期しない終了が発生する場合があります。開いているすべての文書またはブックが閉じられ、データが失われる可能性があります。Microsoft Office Outlook の電子メール エディタとして Word を使用している場合は、開いているすべての電子メール メッセージも閉じられます。AppDomain.DomainUnload イベントを処理する際に Windows フォームまたはメッセージ ボックスを表示する場合も、この問題が発生することがあります。
この問題を回避するには、モードレス フォームから、またはモードレス フォームのイベントから Close メソッドを呼び出さないようにします。代わりに、次の手順を使用します。
フォームからドキュメントを閉じる必要がある場合、モーダル フォームを使用します。たとえば、Show の代わりに ShowDialog を使用します。
モードレス フォームを使用する必要がある場合は、文書またはブックを閉じる前に、必ずモードレス フォームを閉じて、フォームへの参照を完全に破棄してください。次に例を示します。
Dim form1 As SampleForm Sub OpenForm() form1 = New SampleForm form1.Show() ' Show the form modelessly. End Sub Sub ForceShutdown() ' Completely close the form if it is still running. ' Note that hiding the form might not work by itself. If (Not form1 Is Nothing) Then form1.Close() form1.Dispose() form1 = Nothing End If Me.Close() End Sub
SampleForm form1; private void OpenForm() { form1 = new SampleForm(); form1.Show(); // Show form modelessly. } private void ForceShutdown() { // Completely close the form if it is still running. // Note that hiding the form might not work by itself. if (form1 != null) { form1.Close(); form1.Dispose(); form1 = null; } object saveChanges = Word.WdSaveOptions.wdSaveChanges; this.Close(ref saveChanges, ref missing, ref missing); }
C# で missing パラメータを渡す方法については、「Office ソリューションの省略可能なパラメータについて」を参照してください。
[名前を付けて保存] ダイアログの Cancel パラメータを設定すると不正な警告または Word の予期しない終了が発生する
ThisDocument の DocumentBeforeSave イベント ハンドラ内で SaveAs ダイアログ ボックスを表示し、Cancel パラメータを false に設定すると、アプリケーションの予期しない終了が発生することがあります。Cancel パラメータを true に設定すると、自動保存が無効になっているというエラー メッセージが表示されます。
Excel のワークシート ウィンドウを分割すると、Windows フォーム コントロールの予期しない動作が発生する
Windows フォーム コントロールが含まれるワークシート ウィンドウを分割すると、コントロールが 2 つのウィンドウで同じように動作しない場合があります。たとえば、ワークシート上の TextBox の BackColor プロパティを変更するコードを実行した場合、いずれか一方のウィンドウだけで変更が反映されます。
Excel のホスト コントロールをメソッドに渡すと InvalidCastException がスローされる
Excel のメソッドとプロパティには、ネイティブ Office オブジェクトを渡すことが必要なものがあります。ExcelLocale1033Attribute 属性が false に設定されている場合、ネイティブ Office オブジェクトに基づいたホスト コントロールを渡すと、InvalidCastException がスローされます。このようなメソッドやプロパティに基になるネイティブ Office オブジェクトを渡すには、ホスト コントロールの InnerObject プロパティを使用できます。Excel のローカリゼーションに関する問題の詳細については、「さまざまな地域設定を使用した Excel のデータの書式設定」を参照してください。
モーダル ダイアログを表示すると ListObject のデータ バインディングが失敗する
Excel で、ListObject にバインドされているデータセットが更新されているときにモーダル ダイアログ ボックスを表示すると、ListObject のデータ バインディングが失敗します。ListObject でデータ バインディングが失われると、DataBindingFailure イベントが発生します。ListObject をデータ ソースにバインドし直すには、DataBindingFailure イベントを処理し、SetDataBinding メソッドを呼び出します。
配置マニフェストをダブルクリックするとエラーが発生する
配置マニフェストをダブルクリックすると、次のメッセージが表示されます。
ビルドを続行できません。アプリケーションは正しくフォーマットされていません。詳細については、アプリケーション開発元に問い合わせてください。
ClickOnce 配置とは異なり、Visual Studio Tools for Office ソリューションは、配置マニフェストをダブルクリックしても実行できません。ソリューションを実行するには、Office アプリケーションを開きます。Word および Excel の場合は、アプリケーション内でソリューション ドキュメントを開きます。または、ドキュメント ファイルをダブルクリックすることもできます。
Visual Studio Tools for Office ソリューションの配置の詳細については、「ドキュメント レベルのカスタマイズの配置 (2003 システム)」および「アプリケーション レベルのアドインの配置 (2003 システム)」を参照してください。配置マニフェストの詳細については、「Office ソリューション用配置マニフェスト (2003 システム)」を参照してください。
参照
処理手順
Visual Studio のデザイン時のトラブルシューティング