Jesteś obecnie w trybie offline. Czekamy na ponowne połączenie z Internetem.

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

Zakończono świadczenie pomocy technicznej dla pakietu Office 2003

Firma Microsoft zakończyła świadczenie pomocy technicznej dla pakietu Office 2003 8 kwietnia 2014. Ta zmiana wpłynęła na Twoje aktualizacje oprogramowania i opcje zabezpieczeń. Dowiedz się, co to oznacza dla Ciebie i jak zapewnić sobie kontynuację ochrony.

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 = 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)
  • Innym rozwiązaniem jest ustawienie klasy CultureInfo przed wywołaniem metody programu Excel. Na przykład:
    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

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 Globalization and Localization Issues for Solutions Created with Microsoft Visual Studio Tools for the Microsoft Office System
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.ClickEnd 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 = NothingEnd 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: 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
XL2003 XL2007
Właściwości

Identyfikator artykułu: 320369 — ostatni przegląd: 11/22/2007 21:43:06 — zmiana: 8.3

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

  • kbvs2002sp1sweep kbautomation kbbug kbpending KB320369
Opinia