[XL2003] [BUG] Excel をオートメーションで起動すると "Old Format or Invalid Type Library" エラーが表示される

文書翻訳 文書翻訳
文書番号: 320369 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

Microsoft Visual Basic .NET、Microsoft Visual C# .NET、または Microsoft Visual C++ を使用して Microsoft Excel をオートメーションで起動すると、特定のメソッドを呼び出しているときに次のエラー メッセージが表示されることがあります。
Error: 0x80028018
Description: Old Format or Invalid Type Library

原因

以下の条件に該当する場合に Excel のメソッドを呼び出すと、上記のエラーが発生します。
  • メソッドに LCID (ロケール識別子) が必要です。
  • 地域設定が英語以外の言語に設定されているコンピュータで、Excel 英語版を実行しています。
現在のユーザーのロケールが英語以外の言語に設定されているクライアント コンピュータで Microsoft Excel 英語版を実行している場合、設定されている言語の言語パックが Excel によって検索されます。言語パックが見つからない場合、エラーが表示されます。

回避策

この問題を回避するには、次のいずれかの操作を行います。
  • 使用しているバージョンの Office 用の Multilingual User Interface Pack をインストールします。
  • InvokeMember を使用して Excel メソッドまたはプロパティを実行し、その呼び出しに対して CultureInfo を指定できるようにします。たとえば、次のコードは、CultureInfo を "en-US" に設定した状態で、Workbooks オブジェクトの Add メソッドを呼び出す方法を示しています。
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oBooks As Object = oApp.Workbooks
    Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
    oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
    
  • Excel メソッドを呼び出す前に、CultureInfo を設定します。以下に例を示します。
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oldCI As System.Globalization.CultureInfo = _
        System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = _
        New System.Globalization.CultureInfo("en-US")
    oApp.Workbooks.Add()
    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI

地域設定が Office の現在の言語バージョンと一致しないコンピュータで、これらの回避策のいずれかを使用する場合、Excel の動作と、特定のロケール用にフォーマットされたデータが Excel でどのように解釈されるかに関する詳しい知識が必要です。グローバライズされた Excel ソリューションを Visual Studio .NET で作成する方法の詳細については、MSDN の次の資料を参照してください。

Creating Office Solutions for Use in Multiple Countries/Regions
http://msdn.microsoft.com/library/en-us/odc_vsto2003_ta/html/odc_VSTMultCR.asp

Globalization and Localization Issues for Solutions Created with Microsoft Visual Studio Tools for the Microsoft Office System
http://msdn.microsoft.com/library/en-us/odc_vsto2003_ta/html/VSTO_globalization.asp

状況

マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。

詳細

問題の再現手順

  1. コンピュータのロケールが英語以外の言語に設定されていることを確認します。

    Windows 2000 の場合
    1. コントロール パネルで、[地域のオプション] をダブルクリックします。
    2. [全般] タブでロケールを選択し、[OK] をクリックします。

    Windows XP または Windows Server 2003
    1. コントロール パネルで、[地域と言語のオプション] をダブルクリックします。
    2. [地域オプション] タブでロケールを選択し、[OK] をクリックします。
  2. Microsoft Visual Studio .NET を起動します。
  3. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。[新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] の下の [Visual Basic プロジェクト] をクリックします。[テンプレート] の下の [Windows アプリケーション] をクリックし、[OK] をクリックします。デフォルトで Form1 が作成されます。
  4. [表示] メニューの [ツールボックス] をクリックし、Form1 にボタンを 1 つ追加します。
  5. [Button1] をダブルクリックして、フォームのコード ウィンドウを表示します。
  6. コード ウィンドウには、次のコードが表示されます。
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End Sub
    					
    これを次のコードで置き換えます。
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oApp As Object
        Dim oDoc As Object
        oApp = CreateObject("Excel.Application")
        oApp.Visible = True
        oDoc = oApp.Workbooks.Add
        oDoc.Close()
        oApp.Quit()
        oDoc = Nothing
        oApp = Nothing
    End Sub
    					
  7. 次の行を Form1 コード モジュールの先頭に追加します。
    Option Strict Off
  8. F5 キーを押してプログラムをビルドして実行します。
  9. エラーを生成するには、[Button1] をクリックします。次の行でエラーが発生します。
    oDoc = oApp.Workbooks.Add
    					

関連情報

Office オートメーションの詳細については、次の Microsoft Office Development Web サイトを参照してください。
http://support.microsoft.com/ofd

Office XP Multilingual User Interface Pack の詳細については、次のサイトを参照してください。

多言語版 Office XP with Multilingual User Interface Pack の入手方法
http://www.microsoft.com/japan/office/evaluation/indepth/multilingual/muipackavailable.asp

また、「サポート技術情報」 (Microsoft Knowledge Base) の次の資料も参照してください。
301982 Visual Basic .NET を使用して Microsoft Excel を自動化する方法
302084 Microsoft Visual C# .NET を使用して Microsoft Excel を自動化する方法

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 320369 (最終更新日 2005-08-23) を基に作成したものです。

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

プロパティ

文書番号: 320369 - 最終更新日: 2006年2月3日 - リビジョン: 6.7
この資料は以下の製品について記述したものです。
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C++ 6.1
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
キーワード:?
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com