2010-12-15 55 views
0

Visual Studio 2010 vbを使用しています。 .netを使用すると、microsoft.office.interop.outlookタイプ= .netバージョン12.0.0.0への参照が追加されました。copy local = false path = ... Microsoft Visual Studio 10.0 /../ pia/office1280040154エラー - interop.outlook.namespaceクラスが登録されていません - CLSID = {0006308B-0000-0000-C000-000000000046}

regasmの使用。 exe microsoft.office.interop.outlook.dllこのアセンブリを登録しました。 /regfileオプションを使用して、コンテンツを表示しました。見つからないclsID(CLSID = {0006308B-0000-0000-C000-000000000046})は、このregfileにありません。私はそうすべきだと思います。 MSDNサイトのこのクラスIDは、Office 2010 Outlook.Namespaceクラスに私を連れて行きます。 Office 2007では、clSIDは表示されません。

GACには、microsoft.office.interop.outlook.dllバージョン12.0.0.0が登録されています。

私のアプリケーションを実行すると、上記のランタイム例外が発生します。

この問題を処理するには何が必要ですか。

+0

はい、それは事務所です2010(バージョン14)固有のCLSID、私はそれを持っていません。バージョン12の相互運用機能ライブラリを使用したときにどうやってそれを参照し終わったかは、私にとって謎です。ただし、interopファイルでregasmを実行しないでください。これはPIAの登録を不正にするものです。 –

答えて

0

不適切なバージョンのOffice dllを使用しないようにする最も簡単な方法は、DLLの特定のバージョンを参照しないように遅延バインディングを使用することです。

Officeオブジェクトモデルの実数型を使用できないため、オートメーションオブジェクト用にIntellisenseを使用できないという欠点があります。既にすべてのコードを記述していればコードを変更してください。ただし、状況に応じて、それは価値があるかもしれません。

次の記事は、初期および遅延バインディングの違いについて説明し、それぞれのサンプルコードがあります: - > 64ビットの壁How To Use Visual Basic .NET for Binding for Office Automation Servers

0

あなたはおそらく32ビット<を打つことができます。 OSは32ビットまたは64ビット版Office

  • 2010することができ

    • は、32ビットまたは64ビット
    • することができ、あなたのプロセスは、「任意のCPU」または32ビットであるか、またはすることができます64ビット。

    このように、すべてが一貫していることを確認する必要があります。たとえば、OSが64ビットでOfficeが32ビットで、アプリケーションが「Any CPU」の場合、このエラーが発生する可能性があります。 (おそらく、Office 2010はそれを実際にサポートしています...)

  • 0

    私はこの問題を発見しました。私は名前空間を宣言しなければならないときにインスタンス化していました。 具体的に:Outlook.Application =新Outlook.Application 薄暗いNS =新しいoutlook.NameSpace NS = myapp.getNameSpace( "MAPI")として

    輸入見通し= Microsoft.Office.Interop.Outlook 薄暗いmyappの

    私は以下の私のランタイムエラーにそれを変え消失し、それがうまく走った

    Outlook.Application =新Outlook.Application 点心NS = myapp.GetNamespace( "MAPI")として

    薄暗いmyappの

    関連する問題