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 から: "デザイナーの読み込みが正しくできませんでした。"
これらのエラーは、ドキュメント検査を使用して削除された個人情報があったブックに基づいてプロジェクトを作成しようとしたときに、発生する可能性があります。 この問題を回避するには、プロジェクトを作成する前に次の手順を実行します。
- Excel でブックを開きます。
- Excel でセキュリティ センターを開きます。
- [ Privacy オプション ] タブで、[保存時に ファイルのプロパティから個人情報を削除する ] チェック ボックスをオフにします。
- ブックを保存し、Excel を終了します。
問題 4: 移行後にプロジェクトを開くことができない
Office ソリューションを Microsoft Office 2010 に移行した後、2007 Microsoft Office システムのみがインストールされている開発用コンピューターでプロジェクトを開くことはありません。 次のエラー メッセージが表示される可能性があります。
- "ソリューション内の 1 つ以上のプロジェクトが正しく読み込まれていません。 詳細については、出力ウィンドウを確認してください。"
- "このプロジェクト タイプに関連付けられてるアプリケーションがこのコンピューターにインストールされていないため、プロジェクトを作成できません。 このプロジェクト タイプに関連付けられている Microsoft Office アプリケーションをインストールする必要があります。"
この問題を解決するには、.vbproj または .csproj ファイルを編集します。 Word プロジェクトの場合は、 HostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}"
を HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}"
に置き換えます。 Excel プロジェクトの場合は、 HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}"
を HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}"
に置き換えます。 Outlook プロジェクトの場合は、 HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}"
を HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}"
に置き換えます。
または、Microsoft Office 2010 が既にインストールされている開発用コンピューターでのみ、移行後のプロジェクトを開くようにします。
問題 5: Windows フォーム コントロールを含むアップグレードされた Office 2003 ドキュメント レベルのプロジェクトのエラー
Microsoft Office 2003 の文書レベルのプロジェクトをアップグレードする場合に、文書に Windows フォーム コントロールが含まれていると、アップグレードされたプロジェクトでコンパイルまたは実行時エラーが発生することがあります。 この問題を回避するには、プロジェクトをアップグレードする前に、Visual Studio 2005 Tools for Office Second Edition Runtime を開発用コンピューターにインストールします。 このバージョンのランタイムは、Microsoft ダウンロード センターの「 Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86)」から再頒布可能パッケージとしてダウンロードできます。
プロジェクトのアップグレードが完了したら、Visual Studio 2005 Tools for Office Second Edition Runtime が他の Office ソリューションで使用されていない場合は、開発用コンピューターからアンインストールできます。
デザイナーを使用するときの問題
ドキュメント レベルのプロジェクトでドキュメント、ブック、またはワークシート デザイナーを操作すると、次の問題が発生する可能性があります。
問題 1: デザイナーが正しく読み込めませんでした
次の場合、Visual Studio でデザイナーを開くことはありません。
- Excel または Word が既に開いており、モーダル ダイアログ ボックスを表示している。 デザイナーを開くには、Excel または Word でモーダル ダイアログ ボックスが開いていないかを確認し、開いているモーダル ダイアログ ボックスがあればそれを閉じます。 開いているモーダル ダイアログ ボックスがない場合は、Excel または Word が応答する前に、何か別のアクションが必要な可能性があります。
- プロジェクトは現在デバッグ中である。 デザイナーを開くには、デバッグを停止または終了します。
- 開発用コンピューターにインストールされている Excel の VSTO アドインにより、Excel の開始時にダイアログ ボックスが表示される。 ドキュメント レベルの Excel プロジェクトを作成するには、まず、VSTO アドインを無効にする必要があります。
問題 2: コントロールが文書またはワークシートに黒い四角形として表示される
ドキュメントやワークシートでコントロールをグループ化すると、以降は Visual Studio がそのコントロールを認識しなくなります。 グループ化されたコントロールは、 Properties ウィンドウではアクセスできないため、ドキュメントまたはワークシートに黒い四角形として表示されます。 コントロールの機能を復元するには、グループ化を解除する必要があります。
問題 3: Word テンプレートのコントロールが Visual Studio に表示されない
Visual Studio デザイナーで Word テンプレートを開くと、テキストに合わないテンプレートのコントロールが表示されない可能性があります。 これは、Visual Studio では Word テンプレートを標準ビューで開くためです。 コントロールを表示するには、View メニューを選択し、Microsoft Office Word ビューをポイントし印刷レイアウトを選択します。
問題 4: Visual Studio デザイナーでクリップ アートの挿入コマンドが何も実行しない
Visual Studio デザイナーで Excel または Word を開いている場合、リボンの [Illustrations タブの [Clip Art] ボタンをクリックしても、Clip Art 作業ウィンドウは開きません。 クリップ アートを追加するには、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 つのインターフェイスを実装します。 これらのイベント インターフェイスでは、名前付け規則 _<objectname>Events<n>Event ( AppEvents_Event や ApplicationEvents2_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 のクラスでは、名前付け規則 <objectname>Class ( DocumentClass や WorkbookClassなど) が使用されます。 たとえば、Word VSTO アドイン プロジェクトの次のコードはコンパイルされません。
Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;
このコードを実行すると、次のようなコンパイル エラーが発生します。
- Visual Basic: "クラス 'DocumentClass' への参照は、そのアセンブリが非 PIA モードを使用してリンクされている場合には許可されません。"
- 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) は、Microsoft.Office.Interop.Word や System.Windows.Forms など、複数の名前空間にあります。 このため、プロジェクト テンプレートの上部にある 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 から実行されない
UNC ネットワークの場所で Excel または Word のドキュメント レベルのプロジェクトを作成する場合は、Excel または Word の [信頼できる場所] リストに、そのドキュメントの場所を追加する必要があります。 それ以外の場合、Visual Studio でプロジェクトを実行またはデバッグしようとすると、カスタマイズは読み込まれません。 信頼できる場所の詳細については、「ドキュメントへの信頼の付与」を参照してください。
問題 3: デバッグ後にスレッドが正しく停止しない
Visual Studio の Office プロジェクトは、デバッガーがプログラムを正しく終了できるように、スレッドの名前付け規則に従うようになっています。 ソリューション内にスレッドを作成する場合、デバッグの停止時にこれらのスレッドが確実に正常に処理されるよう、各スレッドに VSTA _ というプレフィックスを付ける必要があります。 たとえば、ネットワーク イベントを待機するスレッドの Name
プロパティを VSTA_NetworkListener に設定できます。
問題 4: 開発用コンピューターで Office ソリューションを実行またはデバッグできない
開発用コンピューターで Office プロジェクトを実行または開発できない場合は、次のエラー メッセージが表示されることがあります。
アプリケーション ドメインを作成できなかったため、カスタマイズを読み込めませんでした。
Visual Studio は、Office ソリューションを読み込む前に、.NET Framework アセンブリ ローダーである Fusion を使用してアセンブリをキャッシュします。 Visual Studio が Fusion キャッシュへ書き込めることを確認し、もう一度やり直してください。 詳細については、「アセンブリのシャドウ コピー」を参照してください。
問題 5: エディット コンティニュを使用した後にドキュメント レベルのプロジェクトでデバッガーを停止するときにエラーが発生する
Edit と Continue を使用して、プロジェクトが中断モードの間に Excel または Word のドキュメント レベルのプロジェクトのコードを変更すると、デバッガーを停止すると、次のエラー メッセージが表示されるダイアログ ボックスが表示されることがあります。
プロセスを現在の状態で終了すると、データの損失やシステムの不安定性など、望ましくない結果が発生する可能性があります。
ダイアログ ボックスで Yes または No を選択した場合でも、Visual Studio は Excel または Word プロセスを終了し、デバッガーを停止します。 このダイアログ ボックスを表示せずにプロジェクトのデバッグを停止するには、Visual Studio のデバッガを停止するのではなく、直接、Excel または Word を終了します。