2016-05-25 5 views
2

Ich verwende ein standardisiertes Tool, um auf die Excel-API (Softwareroboter) zuzugreifen. Seit dem Upgrade auf Office 2013 erhalte ich jedoch eine Fehlermeldung, wenn ich versuche, eine Arbeitsmappe zu öffnen. Der Fehler ist dies:Excel-API-Fehler

Intern: Code-Phase konnte nicht ausgeführt werden, weil Ausnahme von Codestufe ausgelöst: Altes Format oder ungültiger Typ Bibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

Es gibt eine ganze Menge Code, und ich kann nicht sicher sagen, welches versagt, aber ich denke, es ist diese 3 Zeilen (edit Ich habe bestätigt, dass es ist in der Tat diese Codezeilen, die versagt):

Dim wb as Object = GetInstance(handle).Workbooks.Open(filename) 
name = wb.Name 
wb.Activate() 

ich habe auch versucht, einige Linien auf Culture Zugabe von (nicht) geholfen haben:

Dim wb as Object = GetInstance(handle).Workbooks.Open(filename) 
Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US") 

wb.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, wb, Nothing, ci) 

name = wb.Name 
wb.Activate() 

ich den Fehler erforscht haben (ganz al ot) und fand viele Artikel/Beiträge Vorschlag einige regionale Einstellungen (like this one from Microsoft). Ich habe überprüft, dass mein Windows auf Englisch (US) eingestellt ist, was ich auch für Excel halte. Aber ich bin mir nicht sicher, genau wie man die Sprache von Excel überprüft.

P.S. Kann mir jemand sagen, ob diese 3 Zeilen Code VBA oder VB.NET ist?

Antwort

0

Nach mehreren Stunden der Forschung (und Versuch & Fehler), gelang es mir, eine Lösung zu finden. Eine einzige Zeile Code war alles, was es brauchte (es ist die oberste Zeile, die neu ist):

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US") 
Dim wb as Object = GetInstance(handle).Workbooks.Open(filename) 
name = wb.Name 
wb.Activate()