Office ソリューションの問題のトラブルシューティング
適用対象: Visual Studio
この記事では、Visual Studio で Office ソリューションを開発しているときにさまざまなタスクを実行するときに発生する可能性がある問題のトラブルシューティング方法について説明します。
プロジェクトを作成、アップグレード、および開くときの問題
Office プロジェクトを作成または開くときに、次の問題が発生する可能性があります。
問題 1: プロジェクトを作成できない
Office プロジェクトを作成または開こうとしたときにエラーが発生したが、Visual Studio に原因を特定するのに十分な情報がない場合は、プロジェクトを閉じて Visual Studio を終了し、もう一度開始してください。
ドキュメント レベルのプロジェクトを作成しようとしている場合は、新しいプロジェクトのドキュメントと同じ名前の別のドキュメントが Excel またはWordで既に開いている可能性があります。 Excel またはWordの他のすべてのインスタンスが閉じられていることを確認します。
問題 2: 既存のプロジェクトのドキュメントに基づいて新しいプロジェクトを作成すると、コントロール プロパティが失われます
既存のプロジェクトのドキュメントに基づいて新しい Office プロジェクトを作成した場合、ドキュメント上にあるコントロールのプロパティは新しいプロジェクトにコピーされません。 既存のコントロールのプロパティを手動でリセットします。 または、新しいプロジェクトを作成するのではなく、既存のプロジェクトのコピーを作成するか、(デザイナーで) 新しいソリューションに既存のプロジェクトを読み込み、既存のドキュメントから新しいドキュメントにコントロールをコピーして貼り付けることで、コントロールプロパティを保持することもできます。
問題 3: 既存のブックに基づいて Excel ブック プロジェクトを作成するときのエラー
既存のブックに基づいて新しい Excel ブック プロジェクトを作成すると、次のエラーの組み合わせが表示されることがあります。
- Excel から: "プライバシー警告: このドキュメントには、マクロ、ActiveX コントロール、XML 拡張パック情報、または Web コンポーネントが含まれています。 これには、ドキュメント検査官が削除できない個人情報が含まれる場合があります。
- Visual Studio から: "Designerが正しく読み込めませんでした。
これらのエラーは、ドキュメントインスペクターを使用して個人情報が削除されたブックに基づくプロジェクトを作成しようとするときに発生する可能性があります。 この問題を回避するには、プロジェクトを作成する前に次の手順を実行します。
- Excel でブックを開きます。
- Excel で、セキュリティ センターを開きます。
- [プライバシー オプション] タブで、[チェック保存時にファイルのプロパティから個人情報を削除する] ボックスをオフにします。
- ブックを保存し、Excel を閉じます。
問題 4: 移行後にプロジェクトを開くことができない
Office ソリューションを Microsoft Office 2010 に移行した後、2007 Microsoft Office システムのみがインストールされている開発用コンピューターでプロジェクトを開くできません。 次のエラーが表示される場合があります。
- "ソリューション内の 1 つ以上のプロジェクトが正しく読み込まれていませんでした。 詳細については、出力ウィンドウを参照してください。
- "このプロジェクトの種類に関連付けられているアプリケーションがこのコンピューターにインストールされていないため、プロジェクトを作成できません。 このプロジェクトの種類に関連付けられている Microsoft Office アプリケーションをインストールする必要があります。
この問題を解決するには、 .vbproj または .csproj ファイルを 編集します。 Word プロジェクトの場合は、 を にHostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}"
置き換えますHostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}"
。 Excel プロジェクトの場合は、 を にHostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}"
置き換えますHostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}"
。 Outlook プロジェクトの場合は、 を にHostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}"
置き換えますHostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}"
。
または、移行されたプロジェクトが、Microsoft Office 2010 が既にインストールされている開発用コンピューターでのみ開くようにします。
問題 5: Windows フォーム コントロールを含むアップグレードされた Office 2003 ドキュメント レベルプロジェクトのエラー
Microsoft Office 2003 ドキュメント レベルのプロジェクトをアップグレードし、ドキュメントにWindows フォーム コントロールが含まれている場合、アップグレードされたプロジェクトにコンパイル エラーまたは実行時エラーが発生する可能性があります。 この問題を回避するには、プロジェクトをアップグレードする前に、開発用コンピューターに Visual Studio 2005 Tools for Office Second Edition Runtime をインストールします。 このバージョンのランタイムは、Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86) の Microsoft ダウンロード センターから再頒布可能パッケージとして利用できます。
プロジェクトのアップグレードが完了したら、Visual Studio 2005 Tools for Office Second Edition Runtime を開発用コンピューターからアンインストールできます (他の Office ソリューションで使用されていない場合)。
デザイナーを使用するときの問題
ドキュメント レベルのプロジェクトでドキュメント、ブック、またはワークシート デザイナーを操作すると、次の問題が発生する可能性があります。
問題 1: Designerが正しく読み込めませんでした
次の場合、Visual Studio でデザイナーを開くできません。
- Excel またはWordは既に開いているので、モーダル ダイアログ ボックスが表示されています。 デザイナーを開くには、チェックして、Excel またはWordにモーダル ダイアログ ボックスが開いているかどうかを確認し、開いているモーダル ダイアログ ボックスを閉じます。 開いているモーダル ダイアログ ボックスがない場合は、Excel または Word が応答する前に、他の操作が必要な場合があります。
- プロジェクトは現在デバッグ中です。 デザイナーを開くには、デバッグを停止または終了します。
- 開発用コンピューターにインストールされている Excel VSTO アドインが、Excel の起動時にダイアログ ボックスを表示しています。 Excel ドキュメント レベルのプロジェクトを作成するには、まず VSTO アドインを無効にする必要があります。
問題 2: コントロールがドキュメントまたはワークシートに黒い四角形として表示される
ドキュメントまたはワークシートでコントロールをグループ化した場合、Visual Studio はコントロールを認識しなくなります。 グループ化されたコントロールは、[ プロパティ ] ウィンドウではアクセスできません。また、ドキュメントまたはワークシートに黒い四角形として表示されます。 コントロールの機能を復元するには、コントロールのグループ化を解除する必要があります。
問題 3: Word テンプレートのコントロールが Visual Studio に表示されない
Visual Studio デザイナーでWord テンプレートを開いた場合、テキストに一直線に並んでいないテンプレートのコントロールが表示されない可能性があります。 これは、Visual Studio で標準ビュー Wordテンプレートが開かれるためです。 コントロールを表示するには、[表示] メニューを選択し、[Microsoft Office Word表示] をポイントし、[印刷レイアウト] を選択します。
問題 4: クリップ アートの挿入コマンドが Visual Studio デザイナーで何も実行しない
Visual Studio デザイナーで Excel またはWordを開いている場合、リボンの [図] タブの [クリップ アート] ボタンをクリックしても、[クリップ アート] 作業ウィンドウは開きません。 クリップ アートを追加するには、Visual Studio の外部にあるメイン プロジェクト フォルダー (\bin フォルダー内のコピーではない) にあるブックまたはドキュメントのコピーを開き、クリップ アートを追加してブックまたはドキュメントを保存する必要があります。
コードを記述するときの問題
Office プロジェクトでコードを記述するときに、次の問題が発生する可能性があります。
問題 1: C を使用しているときに Office オブジェクトの一部のイベントにアクセスできない#
場合によっては、Visual C# プロジェクトの Office プライマリ相互運用機能アセンブリ (PIA) 型のインスタンスの特定のイベントにアクセスしようとすると、次のようなコンパイラ エラーが発生することがあります。
'Microsoft.Office.Interop.Excel._Application.NewWorkbook' と 'Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook' の間のあいまいさ
このエラーは、オブジェクトの別のプロパティまたはメソッドと同じ名前のイベントにアクセスしようとしていることを意味します。 イベントにアクセスするには、オブジェクトを そのイベント インターフェイスにキャストする必要があります。
イベントを持つ Office PIA 型では、すべてのプロパティとメソッドを含むコア インターフェイスと、オブジェクトによって公開されるイベントを含むイベント インターフェイスという 2 つのインターフェイスが実装されています。 これらのイベント インターフェイスでは、 や ApplicationEvents2_EventなどのAppEvents_Event名前付け規則 _<objectname>Events<n>Event が使用されます。 オブジェクトで見つかると思われるイベントにアクセスできない場合は、オブジェクトをそのイベント インターフェイスにキャストします。
たとえば、 Application オブジェクトには NewWorkbook イベントとプロパティがあります NewWorkbook 。 イベントを NewWorkbook 処理するには、 を Application インターフェイスに AppEvents_Event キャストします。 次のコード例は、Excel のドキュメント レベルのプロジェクトでこれを行う方法を示しています。
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
((Excel.AppEvents_Event)this.Application).NewWorkbook +=
new Excel.AppEvents_NewWorkbookEventHandler(ThisWorkbook_NewWorkbook);
}
void ThisWorkbook_NewWorkbook(Excel.Workbook Wb)
{
// Perform some work here.
}
Office PIA のイベント インターフェイスの詳細については、「Office プライマリ相互運用機能アセンブリのクラスとインターフェイスの概要」を参照してください。
問題 2: .NET Framework 4 または .NET Framework 4.5 を対象とするプロジェクトで Office PIA クラスを参照できない
.NET Framework 4 または .NET Framework 4.5 を対象とするプロジェクトでは、Office PIA で定義されているクラスを参照するコードは既定ではコンパイルされません。 PIA のクラスでは、 や WorkbookClassなどのDocumentClass名前付け規則 <objectname>クラスが使用されます。 たとえば、Word VSTO アドイン プロジェクトの次のコードはコンパイルされません。
Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;
このコードでは、次のコンパイル エラーが発生します。
- Visual Basic: "アセンブリが No-PIA モードを使用してリンクされている場合、クラス 'DocumentClass' への参照は許可されません。
- Visual C#: "相互運用タイプ 'Microsoft.Office.Interop。Word。DocumentClass' を埋め込むことができません。 代わりに該当するインターフェイスを使用してください。
このエラーを解決するには、代わりに対応するインターフェイスを参照するようにコードを変更します。 たとえば、オブジェクトを DocumentClass 参照するのではなく、代わりに インターフェイスのインスタンスを Document 参照します。
.NET Framework 4 または .NET Framework 4.5 を対象とするプロジェクトでは、既定ですべての相互運用機能の種類が Office PIA から自動的に埋め込まれます。 このコンパイル エラーは、埋め込み相互運用機能はクラスではなくインターフェイスでのみ機能するため発生します。 Office PIA のインターフェイスとクラスの詳細については、「Office プライマリ相互運用機能アセンブリのクラスとインターフェイスの概要」を参照してください。 Office プロジェクトの埋め込み相互運用機能の詳細については、「Office ソリューションの 設計と作成」を参照してください。
問題 3: Office クラスへの参照が認識されない
Application などの一部のクラス名は、 や System.Windows.FormsなどのMicrosoft.Office.Interop.Word複数の名前空間にあります。 このため、プロジェクト テンプレートの上部にある Imports/using ステートメントには、次のような短縮形の修飾定数が含まれています。
Imports/ using ステートメントを使用するには、次のように、Wordまたは Excel 修飾子を使用して Office クラスへの参照を区別する必要があります。
修飾されていない宣言を使用すると、次のようなエラーが発生します。
Wordまたは Excel 名前空間をインポートし、その中のすべてのクラスにアクセスできる場合でも、名前空間のあいまいさを削除するには、Wordまたは Excel ですべての型を完全に修飾する必要があります。
プロジェクトをビルドするときの問題
Office プロジェクトをビルドするときに、次の問題が発生する可能性があります。
問題 1: アクセス許可が制限されたドキュメントに基づくドキュメント レベルのプロジェクトをビルドできない
ドキュメントにアクセス許可が制限されている場合、Visual Studio はドキュメント レベルのプロジェクトをビルドできません。 プロジェクトにアクセス許可が制限されたドキュメントが含まれている場合、プロジェクトはコンパイルされないため、[ エラー一覧 ] ウィンドウに次のメッセージが表示されます。
カスタマイズを追加できませんでした。
アクセス許可が制限されているドキュメントを含める場合は、ソリューションの開発とビルド中に無制限のドキュメントを使用します。 次に、ソリューションを発行した後、発行場所のドキュメントに制限付きアクセス許可を適用します。
問題 2: NamedRange コントロールが削除された後にコンパイラ エラーが発生する
デザイナーで NamedRange アクティブなワークシートではないワークシートからコントロールを削除すると、自動生成されたコードがプロジェクトから削除されず、コンパイラ エラーが発生する可能性があります。 コードが確実に削除されるようにするには、コントロールを削除する前に、コントロールを含む NamedRange ワークシートを常に選択してアクティブワークシートにする必要があります。 コントロールを削除するときに自動生成されたコードが削除されない場合は、ワークシートをアクティブ化し、ワークシートが変更済みとしてマークされるように変更を行うことで、デザイナーにコードを削除させることができます。 プロジェクトをリビルドすると、コードが削除されます。
プロジェクトをデバッグするときの問題
Office プロジェクトをデバッグするときに、次の問題が発生する可能性があります。
問題 1: 開発用コンピューターにソリューションを発行してインストールすると、アンインストールを求めるメッセージが表示される
Office ソリューションをデバッグすると、次のエラーが表示されることがあります。
別のバージョンが現在インストールされており、この場所からアップグレードできないため、カスタマイズをインストールできません。
このエラーは、以前に開発用コンピューターに Office ソリューションを発行してインストールしたことを示します。 メッセージが表示されないようにするには、ソリューションをデバッグする前に、コンピューターにインストールされているプログラムの一覧からソリューションをアンインストールします。 または、開発用コンピューターに別のユーザー アカウントを作成して、発行されたソリューションのインストールをテストすることもできます。
問題 2: UNC ネットワークの場所で作成されたドキュメント レベルのプロジェクトが Visual Studio から実行されない
Excel 用のドキュメント レベルのプロジェクトを作成するか、UNC ネットワークの場所でWordする場合は、ドキュメントの場所を Excel またはWordの信頼できる場所の一覧に追加する必要があります。 そうしないと、Visual Studio でプロジェクトを実行またはデバッグしようとすると、カスタマイズは読み込まれません。 信頼できる場所の詳細については、「 ドキュメントに信頼を付与する」を参照してください。
問題 3: デバッグ後にスレッドが正しく停止しない
Visual Studio の Office プロジェクトは、デバッガーがプログラムを正しく閉じできるようにするためのスレッドの名前付け規則に従います。 ソリューションでスレッドを作成する場合は、デバッグを停止したときにこれらのスレッドが正しく処理されるように、各スレッドにプレフィックス VSTA_を付ける必要があります。 たとえば、ネットワーク イベントのName
VSTA_NetworkListenerを待機するスレッドのプロパティを設定できます。
問題 4: 開発用コンピューターで Office ソリューションを実行またはデバッグできない
開発用コンピューターで Office プロジェクトを実行または開発できない場合は、次のエラー メッセージが表示されることがあります。
アプリケーション ドメインを作成できなかったため、カスタマイズを読み込めませんでした。
Visual Studio では、.NET Framework アセンブリ ローダーである Fusion を使用して、Office ソリューションを読み込む前にアセンブリをキャッシュします。 Visual Studio が Fusion キャッシュに書き込みできることを確認し、もう一度やり直してください。 詳細については、「 シャドウ コピー アセンブリ」を参照してください。
問題 5: 編集と続行を使用した後、ドキュメント レベルのプロジェクトでデバッガーを停止するとエラーが発生する
プロジェクトが中断モードの間に Excel またはWordのドキュメント レベルのプロジェクトのコードを編集して続行を使用して変更を加えた場合、デバッガーを停止すると、次のエラー メッセージが表示されるダイアログ ボックスが表示されることがあります。
プロセスを現在の状態で終了すると、データの損失やシステムの不安定性など、望ましくない結果が発生する可能性があります。
ダイアログ ボックスで [はい] または [いいえ] を選択した場合でも、Visual Studio は Excel または Word プロセスを終了し、デバッガーを停止します。 このダイアログ ボックスを表示せずにプロジェクトのデバッグを停止するには、Visual Studio でデバッガーを停止するのではなく、Excel またはWordを直接終了します。