none
Probleme get_Range RRS feed

  • 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

    Dienstag, 22. September 2015 06:30

Antworten

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 Error

    Wü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: 0x800A03EC

    Gruß,
    Dimitar


    Bitte 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.

    Mittwoch, 23. September 2015 06:25
    Administrator
  • *.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
    Mittwoch, 23. September 2015 06:51
  • 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
    Mittwoch, 23. September 2015 08:08
  • 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.

    Mittwoch, 23. September 2015 08:44
  • 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

    Mittwoch, 23. September 2015 09:12
  • 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 ...

    Mittwoch, 23. September 2015 09:23
  • bzw, wenn die Named Ranges( Zellen) vorher beschrieben sind, kann ich auf die Zellen zugreifen und wenn ich vorher alle Inhalte in den Zellen gelöscht habe, klappt es nicht!
    • Bearbeitet sleepy007 Mittwoch, 23. September 2015 09:58
    Mittwoch, 23. September 2015 09:57
  • Hallo,

    es gibt bei Name die Eigenschft RefersToRange von Type Range. Wahrscheinlich  kann man den Aufruf von get_Range so umgehen. 

    Grüße

    Mittwoch, 23. September 2015 11:47