USTERKA: Błąd „Biblioteka w starym formacie lub nieprawidłowy typ biblioteki” podczas automatyzowania programu Excel

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 320369 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Jeśli program Microsoft Excel jest automatyzowany za pomocą programu Microsoft Visual Basic .NET, Microsoft Visual C# .NET lub Microsoft Visual C++, podczas wywoływania pewnych metod może wystąpić następujący błąd:
Błąd: 0x80028018 (-2147647512)
Opis: Biblioteka w starym formacie lub nieprawidłowy typ biblioteki

Przyczyna

Błąd ten jest wyświetlany podczas wywoływania metody programu Excel, gdy są spełnione następujące warunki:
  • Metoda wymaga identyfikatora ustawień regionalnych LCID.
  • Używana jest angielskojęzyczna wersja programu Excel. W ustawieniach regionalnych komputera jest jednak skonfigurowany inny język niż angielski.
Jeśli na komputerze klienckim jest uruchomiona angielskojęzyczna wersja programu Excel, a w ustawieniach regionalnych bieżącego użytkownika jest skonfigurowany język inny niż angielski, program Excel próbuje zlokalizować pakiet językowy skonfigurowanego języka. Jeśli nie znajdzie tego pakietu językowego, zgłaszany jest błąd.

Obejście problemu

W celu obejścia tego problemu można zastosować jedną z następujących metod:
  • Zainstaluj dodatek Multilingual User Interface Pack dla danej wersji pakietu Office.
  • Wykonaj metodę lub właściwość programu Excel przy użyciu metody InvokeMember, aby móc określić klasę CultureInfo dla tego wywołania. W następującym przykładowym kodzie jest pokazane, w jaki sposób można wywołać metodę Add obiektu Workbooks z wartością „en-US” dla klasy CultureInfo:
    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)
    
  • Innym rozwiązaniem jest ustawienie klasy CultureInfo przed wywołaniem metody programu Excel. Na przykład:
    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

Z tych metod obejścia problemu na komputerze, na którym ustawienia regionalne nie pasują do bieżącej wersji pakietu Office, powinni korzystać tylko użytkownicy znający zachowanie programu Excel i sposób, w jaki interpretuje on dane, które mogą być sformatowane dla określonych ustawień regionalnych. Szczegółowe informacje na temat pisania uniwersalnych rozwiązań korzystających z programu Excel w programie Visual Studio .NET zawierają następujące artykuły w bibliotece MSDN:

Creating Office Solutions for Use in Multiple Countries/Regions
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx
Globalization and Localization Issues for Solutions Created with Microsoft Visual Studio Tools for the Microsoft Office System
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

Stan

Firma Microsoft potwierdziła, że jest to usterka występująca w produktach firmy Microsoft wymienionych w sekcji „Informacje zawarte w tym artykule dotyczą”.

Więcej informacji

Kroki prowadzące do odtworzenia problemu

  1. Sprawdź, czy w ustawieniach regionalnych dla komputera jest określony język inny niż angielski.

    W systemie Windows 2000:
    1. W Panelu sterowania systemu Windows kliknij dwukrotnie ikonę Opcje regionalne.
    2. Na karcie Ogólne zaznacz lokalizację, a następnie kliknij przycisk OK.
    W systemie Windows XP lub Windows Server 2003:
    1. W Panelu sterowania otwórz aplet Opcje regionalne i językowe.
    2. Na karcie Opcje regionalne wybierz ustawienia regionalne, a następnie kliknij przycisk OK.
  2. Uruchom program Microsoft Visual Studio .NET.
  3. W menu File wskaż polecenie New, a następnie kliknij polecenie Project. W oknie dialogowym New Project w obszarze Project Types kliknij opcję Visual Basic Projects. W obszarze Templates kliknij opcję Windows Application, a następnie kliknij przycisk OK. Domyślnie utworzony zostanie formularz Form1.
  4. W menu View kliknij polecenie Toolbox, a następnie dodaj przycisk do formularza Form1.
  5. Aby wyświetlić okno kodu dla formularza, kliknij dwukrotnie przycisk Button1.
  6. W oknie kodu zamień następujący kod
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End Sub
    					
    na kod
    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. Dodaj następujący wiersz na początku modułu kodu Form1:
    Option Strict Off
  8. Naciśnij przycisk F5, aby skompilować i uruchomić program.
  9. Aby wygenerować błąd, kliknij przycisk Button1. Błąd występuje w wierszu zawierającym następujący fragment:
    oDoc = oApp.Workbooks.Add
    					

Materiały referencyjne

Aby uzyskać więcej informacji dotyczących automatyzacji pakietu Office, odwiedź następującą witrynę Microsoft Office Development w sieci Web:
http://support.microsoft.com/ofd
Ponadto zobacz następujące artykuły z bazy wiedzy Microsoft Knowledge Base:
301982 Jak zautomatyzować program Microsoft Excel za pomocą programu Visual Basic .NET
302084 Jak zautomatyzować program Microsoft Excel za pomocą programu Microsoft Visual C# .NET

Właściwości

Numer ID artykułu: 320369 - Ostatnia weryfikacja: 22 listopada 2007 - Weryfikacja: 8.3
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Office Excel 2007
  • 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 C# 2005
  • 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
Słowa kluczowe: 
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369

Przekaż opinię

 

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