Problembeschreibung
Wenn Sie Microsoft Excel mit Microsoft Visual Basic .NET, Microsoft Visual C# .NET oder Microsoft Visual C++ automatisieren, wird beim Aufrufen bestimmter Methoden möglicherweise der folgende Fehler angezeigt:
Fehler: 0x80028018 (-2147647512)Beschreibung: Altes Format oder Ungültige Typbibliothek
Ursache
Sie erhalten diesen Fehler beim Aufrufen einer Excel-Methode, wenn die folgenden Bedingungen erfüllt sind:
-
Die -Methode erfordert eine LCID (Gebietsschemabezeichner).
-
Sie führen eine englische Version von Excel aus. Die regionalen Einstellungen für den Computer sind jedoch für eine nicht englischsprachige Sprache konfiguriert.
Wenn der Clientcomputer die englische Version von Excel ausführt und das Gebietsschema für den aktuellen Benutzer für eine andere Sprache als Englisch konfiguriert ist, versucht Excel, das Sprachpaket für die konfigurierte Sprache zu finden. Wenn das Sprachpaket nicht gefunden wird, wird der Fehler gemeldet.
Problemumgehung
Um dieses Problem zu umgehen, können Sie eine der folgenden Methoden verwenden:
-
Installieren Sie das Multilingual User Interface Pack für Ihre Version von Office.
-
Führen Sie die Excel-Methode oder -Eigenschaft mithilfe von InvokeMember aus, damit Sie cultureInfo für den Aufruf angeben können. Der folgende Code veranschaulicht beispielsweise, wie Sie die Add-Methode des Workbooks-Objekts mit "en-US" als CultureInfo aufrufen können:
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)
-
Oder legen Sie cultureInfo vor dem Aufrufen der Excel-Methode fest. Beispiel:
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
-
Erstellen Sie ein Verzeichnis 1033 unter Microsoft Office\Office11. Kopieren Sie dann excel.exe in das Verzeichnis 1033, und benennen Sie es in xllex.dll um. Weitere Informationen finden Sie unter folgendem Link:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Wenn Sie eine dieser Problemumgehungen für einen Computer verwenden, auf dem die regionalen Einstellungen nicht mit der aktuellen Sprachversion von Office übereinstimmen, sollten Sie mit dem Verhalten von Excel vertraut sein und wie Excel Daten interpretiert, die möglicherweise für ein bestimmtes Gebietsschema formatiert sind. Weitere Informationen zum Schreiben globalisierter Excel-Lösungen mit Visual Studio .NET finden Sie in den folgenden Artikeln auf der MSDN:Creating Office Solutions for Use in Multiple Countries/Regions (ERSTELLEN von Office-Lösungen für die Verwendung in mehreren Ländern/Regionen).
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxGlobalisierungs- und Lokalisierungsprobleme für Lösungen, die mit Microsoft Visual Studio-Tools für Microsoft Office System erstellt wurden
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
Status
Microsoft hat bestätigt, dass es sich hierbei um einen Fehler in den Microsoft-Produkten handelt, die im Abschnitt „Die Informationen in diesem Artikel beziehen sich auf“ aufgeführt sind.
Weitere Informationen
Schritte zum Reproduzieren des Verhaltens
-
Vergewissern Sie sich, dass das Gebietsschema für den Computer auf eine andere Sprache als Englisch festgelegt ist.Für Windows 2000:
-
Doppelklicken Sie in Windows Systemsteuerung auf Regionale Optionen.
-
Wählen Sie auf der Registerkarte Allgemein einen Speicherort aus, und klicken Sie dann auf OK.
Für Windows XP oder Windows Server 2003:
-
Öffnen Sie in Systemsteuerung die Optionen "Regional" und "Language".
-
Wählen Sie auf der Registerkarte Regionale Optionen ein Gebietsschema aus, und klicken Sie dann auf OK.
-
-
Starten Sie Microsoft Visual Studio .NET.
-
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt. Klicken Sie im Dialogfeld Neues Projekt unter Projekttypen auf Visual Basic-Projekte. Klicken Sie unter Vorlagen auf Windows-Anwendung, und klicken Sie dann auf OK. Standardmäßig wird Form1 erstellt.
-
Klicken Sie im Menü Ansicht auf Toolbox, und fügen Sie dann Form1 eine Schaltfläche hinzu.
-
Doppelklicken Sie auf Button1, um das Codefenster für das Formular anzuzeigen.
-
Ersetzen Sie im Codefenster den folgenden Code:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.ClickEnd Sub
Mit:
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
-
Fügen Sie am Anfang des Form1-Codemoduls die folgende Zeile hinzu:
Option Strict Off
-
Drücken Sie F5, um das Programm zu erstellen und auszuführen.
-
Klicken Sie auf Button1, um den Fehler zu generieren. Der Fehler tritt in der Zeile auf, die folgendes lautet:
oDoc = oApp.Workbooks.Add
Informationsquellen
Weitere Informationen zu Office Automation finden Sie auf der folgenden Website für die Microsoft Office-Entwicklung:
http://support.microsoft.com/ofd Weitere Informationen finden Sie in den folgenden Microsoft Knowledge Base-Artikeln:
301982 Automatisieren von Microsoft Excel mit Visual Basic .NET
302084 Automatisieren von Microsoft Excel aus Microsoft Visual C# .NET