現在オフラインです。再接続するためにインターネットの接続を待っています

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

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

現象
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 = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim 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 = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _    System.Threading.Thread.CurrentThread.CurrentCultureSystem.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.ClickEnd 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 = NothingEnd Sub					
  7. 次の行を Form1 コード モジュールの先頭に追加します。
    Option Strict Off
  8. F5 キーを押してプログラムをビルドして実行します。
  9. エラーを生成するには、[Button1] をクリックします。次の行でエラーが発生します。
    oDoc = oApp.Workbooks.Add					
関連情報
Office オートメーションの詳細については、次の Microsoft Office Development Web サイトを参照してください。
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 - 最終更新日: 02/03/2006 21:26:13 - リビジョン: 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
フィードバック
="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> >