BUG: Fehler „Altes Format oder ungültige Typbibliothek" beim Automatisieren von Excel
Symptome
Wenn Sie Microsoft Excel mit Microsoft Visual Basic .NET, Microsoft Visual C# .NET oder Microsoft Visual C++ automatisieren, erhalten Sie beim Aufruf bestimmter Methoden möglicherweise die folgende Fehlermeldung:
Fehler: 0x80028018 (-2147647512)
Beschreibung: Altes Format oder ungültige Typbibliothek
Ursache
Sie erhalten diesen Fehler beim Aufruf einer Excel-Methode, wenn die folgenden Bedingungen erfüllt sind:
Die Methode erfordert eine LCID (Locale Identifier).
Sie führen eine englische Version von Excel aus. Die regionalen Einstellungen des Computers sind jedoch für eine nicht-englische Sprache konfiguriert.
Wenn auf dem Clientcomputer die englische Version von Excel ausgeführt wird 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 Office-Version.
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:
oApp als neues Excel.Application() dimmen
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)Oder legen Sie CultureInfo fest, bevor Sie die Excel-Methode aufrufen. Zum Beispiel:
oApp als neues Excel.Application() dimmen
oApp.Visible = True
oApp.UserControl = True
Dimmen Sie oldCI als System.Globalization.CultureInfo = _
System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = _
Neues System.Globalization.CultureInfo("en-US")
oApp.Workbooks.Add()
System.Threading.Thread.CurrentThread.CurrentCulture = oldCIErstellen Sie ein 1033-Verzeichnis unter Microsoft Office\Office11. Kopieren Sie dann excel.exe in das Verzeichnis 1033 und benennen Sie es in xllex.dll um.
Für weitere Informationen klicken Sie auf den folgenden Link:
http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Wenn Sie eine dieser Problemumgehungen für einen Computer verwenden, dessen regionale Einstellungen nicht mit der aktuellen Sprachversion von Office übereinstimmen, sollten Sie mit dem Verhalten von Excel vertraut sein und wissen, 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 im MSDN:
Erstellen von Office-Lösungen für den Einsatz in mehreren Ländern/Regionen
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx Globalisierungs- und Lokalisierungsprobleme für Lösungen, die mit Microsoft Visual Studio Tools für das 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 „Gilt für" aufgeführt sind.
Mehr Informationen
Schritte zum Reproduzieren des Verhaltens
Stellen Sie sicher, dass das Gebietsschema des Computers auf eine andere Sprache als Englisch eingestellt ist.
Für Windows 2000:Doppelklicken Sie in der Windows-Systemsteuerung auf Regionaloptionen.
Wählen Sie auf der Registerkarte „Allgemein" einen Standort aus und klicken Sie dann auf „OK".
Für Windows XP oder Windows Server 2003:
Öffnen Sie in der Systemsteuerung die Regions- und Sprachoptionen.
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 dann auf „OK". Standardmäßig wird Form1 erstellt.
Klicken Sie im Menü „Ansicht" auf „Toolbox" und fügen Sie dann eine Schaltfläche zu „Form1" hinzu.
Um das Codefenster für das Formular anzuzeigen, doppelklicken Sie auf Button1.
Ersetzen Sie im Codefenster den folgenden Code
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Behandelt Button1.Klicken
End Submit:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Behandelt Button1.Click
oApp als Objekt dimmen
oDoc als Objekt dimmen
oApp = CreateObject("Excel.Application")
oApp.Visible = True
oDoc = oApp.Workbooks.Add
oDoc.Close()
oApp.Quit()
oDoc = Nichts
oApp = Nichts
End SubFügen Sie die folgende Zeile am Anfang des Form1-Codemoduls hinzu:
Option Strikt Aus
Drücken Sie F5, um das Programm zu erstellen und auszuführen.
Um den Fehler zu generieren, klicken Sie auf Button1. Der Fehler tritt in der folgenden Zeile auf:
oDoc = oApp.Workbooks.Add
Verweise
Weitere Informationen zur Office-Automatisierung finden Sie auf der folgenden Microsoft Office Development-Website:
http://support.microsoft.com/ofd Lesen Sie außerdem die folgenden Artikel der Microsoft Knowledge Base:
301982 So automatisieren Sie Microsoft Excel aus Visual Basic .NET
302084 So automatisieren Sie Microsoft Excel aus Microsoft Visual C# .NET
No comments:
Post a Comment