Benutzer mit den meisten Antworten
Probleme get_Range

Frage
-
Hallo,
ich habe immer wieder Probleme beim Zugriff auf Named Range bei Excel.
---------------------------
System.Runtime.InteropServices.COMException (0x800A03EC): Ausnahme von HRESULT: 0x800A03EC
bei Microsoft.Office.Interop.Excel._Worksheet.get_Range(Object Cell1, Object Cell2)
bei TestProtokollDrucken.PDFerstellen.createWordFileFromTemplateStrArray(List`1 listbookmark, String sourceFile, String destFile)
Marke: KalGueltigBis2
Value: 23.06.2015 00:00:00
---------------------------
C#2010 WindowsForm, Excel 2007
der Fehler tritt sporadisch auf.
Ich habe mehrere Named Range in Excel gesetzt und will über meine Anwendung Daten reinschreiben, damit ich hinterher ein PDF erstellen kann, leider tritt nun bei unterschiedlichen Named Ranges immer mal wieder der oben genannte Fehler.
Hat jemand eine Ahnung oder einen Anhaltspunkt woher das kommen kann?
Grüsse
Antworten
-
Hallo,
es gibt bei Name die Eigenschft RefersToRange von Type Range. Wahrscheinlich kann man den Aufruf von get_Range so umgehen.
Grüße
- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 29. September 2015 08:10
- Als Antwort markiert Aleksander Chalabashiev Montag, 5. Oktober 2015 08:38
Alle Antworten
-
Hallo sleepy007,
Welche Dateierweiterung hat die Datei, .xls oder .xlsx ? Bei Excel 2007 und früheren Versionen darf die Anzahl der Zeilen nicht größer als 65535 sein. Sieh Dir diese Diskussion an:
Exception from HRESULT: 0x800A03EC ErrorWürdest Du auch versuchen, "en-US" als CurrentCulture festzulegen? Das kann auch manchmal den Fehler beheben. Hier gibt es zwei Beispiele:
COMException 0x800A03EC when setting axis title
Exception from HRESULT: 0x800A03ECGruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
*.xlsx und 65000 habe ich nicht erreicht..
Mein Code dazu ist:
Excel._Application exAppp = new Excel.Application(); exAppp.Visible = true; Excel.Workbook exWb = exAppp.Workbooks.Open(sourceFile); Excel.Worksheet exWs = (Excel.Worksheet)exWb.Worksheets.get_Item("Rohdaten"); Excel.Range er ; // hier noch etra ein test ob der namespace vorhanden ist Excel.Names xN = exWb.Names; try { foreach (Excel.Worksheet excw in exWb.Worksheets) { foreach (Excel.Name exx in xN) { nameMerker.Add( new cBookmark( exx.Name.ToString(), exx.Value.ToString() )); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } // der zugriff, bei dem der Fehler auftritt try { er = exWs.get_Range(textmarkeName,System.Type.Missing); er.Value2 = textmarkeValue.ToString(); } catch (Exception ex) { /// Fehlerausgabe MessageBox.Show(ex.ToString () + System.Environment.NewLine + "Marke: " + textmarkeName + System.Environment.NewLine + "Value: " + textmarkeValue ); }
Irgendeine Idee?
- Bearbeitet sleepy007 Mittwoch, 23. September 2015 07:06
-
Hallo,
es fehlt noch den Code, wo textmarkeName initialisiert wird.
Warum machst Du foreach(Excel.Name exx in xN) für jeden Worksheet? Wenn Du drei Worksheets hast, dann wird den Name in nameMerker dreifach gespeichert.
foreach (Excel.Worksheet excw in exWb.Worksheets) { foreach (Excel.Name exx in xN) { nameMerker.Add( new cBookmark( exx.Name.ToString(), exx.Value.ToString() )); } }
Kann es sein, dass Named Range nicht nur im "Rohdaten" Worksheet angelegt wurden?
Grüße
- Bearbeitet Iso7 Mittwoch, 23. September 2015 09:03
-
Hallo,
es fehlt noch den Code, wo textmarkeName initialisiert wird.
Warum machst Du foreach(Excel.Name exx in xN) für jeden Worksheet? Wenn Du drei Worksheets hast, dann wird den Name in nameMerker dreifach gespeichert.
foreach (Excel.Worksheet excw in exWb.Worksheets) { foreach (Excel.Name exx in xN) { nameMerker.Add( new cBookmark( exx.Name.ToString(), exx.Value.ToString() )); } }
Kann es sein, dass Named Ranged nicht nur im "Rohdaten" Worksheet angelegt wurden?
Grüße
String textmarkeName = "";
String textmarkeValue = "";textmarkeName = listbookmark[n].bookmark;
textmarkeValue = listbookmark[n].value;wenn´s dir hilft...
die foreach schleife ist nur zum debuggen und zum überprüfen im code, damit ich nachschauen kann ob die marken gelesen werden können. und sie können gelesen werden, alle 112, nur bei 4 oder 5 marken gibt es zugriffs probleme, die dann obige fehlermeldung erzeugen.
-
Hallo,
1)Kann es sein, dass die Named Ranges nicht nur im "Rohdaten" Worksheet angelegt wurden?
2) Tritt der Fehler nur bei bestimmten Named Ranges auf, wenn dein Code zwei Mal auf dem gleichen Workbook ausgeführt wird?
Grüße
1 :-) nein
2 :-) nein
ich habe nun ein weiteres Name Range hinzugefügt (willkürlich), nun läuft der code durch!
die alten Named Ranges habe ich nicht angerührt, das ist doch irre ...
-
Hallo,
es gibt bei Name die Eigenschft RefersToRange von Type Range. Wahrscheinlich kann man den Aufruf von get_Range so umgehen.
Grüße
- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 29. September 2015 08:10
- Als Antwort markiert Aleksander Chalabashiev Montag, 5. Oktober 2015 08:38