Excel VSTO Addin: Fehler HRESULT 0x80028018 InteropServices.COMException: Altes Format oder ungültige Typbibliothek
Problem:
Beim Lesen von Werten in MS Excel aus einer VSTO Anwendung kommt ein Fehler: System.Reflection.TargetInvocationException mit der Detailmeldung, dass ein altes Format vorliegt.
Ursache:
Der Fehler tritt auf, wenn man auf MS Excel zugreifen möchte über eine VSTO Anwendung, wobei die Landessprache des installierten Office Produktes nicht in Englisch ist.
VSTO Anwendungen interagieren mit Offce über eine englische Proxy-Schnittstelle, welche immer auf English en-US eingestellt ist.
Status: offen
Vorgeschlagene Lösung:
Laut Service Infos:
1) Man sollte vor einem Zugriff auf eine Excel-Dokument die CultureInfo auf English umstellen
2) Man sollte zusätzlich das englische Sprachpaket für Office installieren
Beispiel in C# Code:
//*Problem HRESULT 0x80028018
//< change Language to English >
System.Globalization.CultureInfo original_Language = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
//</ change Language to English >
//< open Excel Worksheet >
Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet;
//< open Excel Worksheet >
//< get Cell.Value >
Excel.Range actCell = Globals.ThisAddIn.Application.ActiveCell;
if (actCell.Value2 != null)
{
string sValue = actCell.Value2.ToString();
string sText = actCell.Text;
}
//</ get Cell Value >
//< restore language >
System.Threading.Thread.CurrentThread.CurrentCulture = original_Language;
//< restore language >
|
Fazit:
Trotz Umstellungen bleibt der Fehler in Office 2016 bestehen.
Zusätzlicher Lösungsvorschlag:
Für den Debugging-Rechner sollte man Microsoft Office komplett löschen und zunächst die Englische Version installieren, sodass MS Office und MS Visual Studio beide in Englisch sind.
*VSTO: Visual Studio Tools for Office
VSTO sind Projekte in Visual Studio, welche auf Microsoft Office Produkte wie Excel, Word, Outlook, Powerpoint zugreifen.
Die Projekte basieren auf der Programmiersprache C# oder vb.net.
Download des Sprachpaket für Office Produkte:
Language Accessory Pack unter Language-Accessory-Pack-f%C3%BCr-Office-2016
Fehlerprotokoll im Breakpoint unter Visual Studio
Error Log:
Value2
{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek.
(Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
bei System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)} System.Reflection.TargetInvocationException
|