Symptomy
Jeśli automatyzujesz program Microsoft Excel za pomocą programu Microsoft Visual Basic .NET, Microsoft Visual C# .NET lub Microsoft Visual C++, podczas wywoływania określonych metod może zostać wyświetlony następujący błąd:
Błąd: 0x80028018 (-2147647512)Opis: stary format lub biblioteka nieprawidłowego typu
Przyczyna
Ten błąd powoduje wywołanie metody programu Excel, gdy są spełnione następujące warunki:
-
Metoda wymaga identyfikatora LCID (identyfikatora ustawień regionalnych).
-
Uruchomisz angielską wersję programu Excel. Ustawienia regionalne komputera są jednak skonfigurowane dla języka nieanglojęzycznego.
Jeśli na komputerze klienckim jest uruchomiona angielska wersja programu Excel, a ustawienia regionalne dla bieżącego użytkownika są skonfigurowane dla języka innego niż angielski, program Excel spróbuje zlokalizować pakiet językowy dla skonfigurowanego języka. Jeśli pakiet językowy nie zostanie znaleziony, zostanie zgłoszony błąd.
Obejście
Aby obejść ten problem, możesz użyć jednej z następujących metod:
-
Zainstaluj wielojęzyczny pakiet User Interface Pack dla swojej wersji pakietu Office.
-
Wykonaj metodę lub właściwość programu Excel przy użyciu invokeMember, dzięki czemu można określić CultureInfo dla wywołania. Na przykład poniższy kod ilustruje sposób wywoływania metody Add obiektu Skoroszyty z ciągiem "en-US" jako 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)
-
Możesz też ustawić funkcję 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
-
Utwórz katalog 1033 w obszarze Microsoft Office\Office11. Następnie skopiuj excel.exe do katalogu 1033 i zmień jego nazwę na xllex.dll. Aby uzyskać więcej informacji, kliknij następujący link:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Jeśli korzystasz z jednego z tych obejść dla komputera, na którym ustawienia regionalne nie są zgodne z bieżącą wersją językową pakietu Office, musisz zapoznać się z zachowaniem programu Excel i tym, jak program Excel będzie interpretował dane, które mogą być sformatowane dla określonych ustawień regionalnych. Aby uzyskać więcej szczegółowych informacji na temat pisania zglo globalnych rozwiązań programu Excel za pomocą programu Visual Studio .NET, zobacz następujące artykuły w witrynie MSDN:Tworzenie rozwiązań pakietu Office do użycia w wielu krajach/regionach
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxProblemy z globalizacją i lokalizacją rozwiązań utworzonych za pomocą Microsoft Visual Studio Tools dla Microsoft Office System
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
Stan
Firma Microsoft potwierdziła, że jest to błąd w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Więcej informacji
Procedura odtwarzania zachowania
-
Sprawdź, czy ustawienia regionalne komputera są ustawione na język inny niż angielski.W systemie Windows 2000:
-
W systemie Windows Panel sterowania kliknij dwukrotnie pozycję Opcje regionalne.
-
Na karcie Ogólne wybierz lokalizację, a następnie kliknij przycisk OK.
W systemie Windows XP lub Windows Server 2003:
-
W Panel sterowania otwórz pozycję Opcje regionalne i językowe.
-
Na karcie Opcje regionalne wybierz ustawienia regionalne, a następnie kliknij przycisk OK.
-
-
Uruchom program Microsoft Visual Studio .NET.
-
W menu Plik wskaż pozycję Nowy, a następnie kliknij pozycję Projekt. W oknie dialogowym Nowy projekt w obszarze Typy projektów kliknij pozycję Projekty w języku Visual Basic. W obszarze Szablony kliknij pozycję Aplikacja systemu Windows, a następnie kliknij przycisk OK. Domyślnie jest tworzony formularz1.
-
W menu Widok kliknij polecenie Przybornik, a następnie dodaj przycisk do formularza 1.
-
Aby wyświetlić okno kodu formularza, kliknij dwukrotnie przycisk1.
-
W oknie kodu zastąp następujący kod
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.ClickEnd Sub
Z:
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
-
Dodaj następujący wiersz na początku modułu kodu Formularza1:
Option Strict Off
-
Naciśnij klawisz F5, aby utworzyć i uruchomić program.
-
Aby wygenerować błąd, kliknij przycisk1. Błąd występuje w wierszu, który brzmi:
oDoc = oApp.Workbooks.Add
Informacje
Aby uzyskać więcej informacji na temat automatyzacji pakietu Office, odwiedź następującą witrynę internetową microsoft office development:
http://support.microsoft.com/ofd Ponadto zobacz następujące artykuły z bazy wiedzy Microsoft Knowledge Base:
301982 Jak zautomatyzować program Microsoft Excel z programu Visual Basic .NET
302084 Jak zautomatyzować program Microsoft Excel z programu Microsoft Visual C# .NET