Ich erhalte HRESULT: 0x800A03EC für die Methode Worksheet.range. Die Anzahl der Zeilen beträgt mehr als 70 KB. Büro 2007.
Code:
Microsoft.Office.Interop.Excel.Range neededRange
= currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]];
Hier ist meine Reihenanzahl mehr als 65530. Pausen bei dieser Funktion. Ich habe beobachtet, dass es nur dann bricht, wenn die Zeilenanzahl mehr als 65530 beträgt.
Dieses Problem tritt auf, wenn Sie ein abwärtskompatibles Arbeitsblatt (.xls) anstelle eines .xlsx verwenden
Damit Blätter in der Version vor 2007 geöffnet werden können, dürfen sie nicht mehr als 65.000 Zeilen enthalten. Sie können die Anzahl der Zeilen in Ihrem Arbeitsblatt überprüfen, indem Sie Strg + Pfeil nach unten drücken, bis Sie den unteren Rand treffen. Wenn Sie versuchen, einen größeren Bereich als diese Anzahl von Zeilen zu erhalten, wird ein Fehler generiert
Wir haben das gleiche erhalten. Die Ausnahme war
Stacktrace: at Microsoft.Office.Interop.Excel._Workbook.SaveAs (Objektdateiname, Objektdateiformat, Objektkennwort, Objekt WriteResPassword, Objekt ReadOnlyRecommended, Objekt CreateBackup, XlSaveAsAccessMode AccessMode, ObjektkonfliktResolution, ObjektText) VisualLayout, Object Local) `
mit einer inneren Ausnahme von
Ausnahme von HRESULT: 0x800A03EC 2012-11-01 10: 37: 59`
Wir konnten das Problem mit Informationen aus diesem Beitrag lösen, die ich hier aus Bequemlichkeit zitiere ...
Ich bin auf dieses Problem gestoßen.
Irgendwo in meinem Code habe ich festgestellt, dass ich von 0 an gezählt habe (wie in einem C # -Code).
Es stellt sich heraus, dass die Excel-Zählung bei 1 beginnt.
Wenn ich mir die verschiedenen Antworten oben ansehe und auf meine eigenen jüngsten Erfahrungen zurückgreife (ich habe diesen Fehlercode zu etwas völlig Unverbundenem gemacht - Einstellung Application.Calculation
), komme ich zu dem Schluss, dass der gleiche Fehlercode verwendet wird, um mehrere nicht zusammenhängende Probleme anzuzeigen. Also, @Garreh sollten Sie wahrscheinlich eine neue Frage stellen (nicht, dass jemand allein aufgrund des Fehlercodes helfen kann). Ich habe dasselbe mit Word-Interop von C # gesehen, bei dem die gleiche HRESULT
für fast jede Art von Fehler verwendet wird. Ich habe nie eine befriedigende Microsoft-Dokumentation darüber gefunden, was die Codes bedeuten könnten.
Dies kann auch der Fall sein, wenn Sie keinen Platz auf der Partition haben, auf der Sie speichern.
Ich habe meine HD überprüft und fand es voll. Das Verschieben einiger nicht benötigter Dateien auf eine andere Partition hat mein Problem gelöst.
Die Excel-Datei ist einfach beschädigt. Die beste Lösung ist das Ändern/Reparieren der Datei. (Erstellen Sie eine Kopie der vorhandenen Datei und benennen Sie sie um.)
Dies ist keine direkte Antwort auf die Frage, aber beim Öffnen einer xlsx-Datei wurde diese Fehlermeldung angezeigt. Das Problem war, dass ich Schrägstriche in meinem Dateipfad verwendete. Siehe auch https://stackoverflow.com/a/24635904/5932003 . Früher funktionierte es in früheren Versionen von Excel, jedoch nicht mit Version 1711 (Build 8730.2127).
Ich konnte das Problem mithilfe von IDispatch-> Invoke (..., EXCEPINFO, ...) diagnostizieren. Das EXCEPINFO-Objekt enthielt eine nützliche Beschreibung der Fehler. Ich war in C++ - Land, aber ich vermute, dass C # -Code ähnlich diesem SO - Post den Trick tut: Packaging IDispatch Invoke mit Parametern in C # (mit DISPPARAMS) .
Nur zu Ihrer Information, bekam den Fehler beim Versuch, den Zeilenstil anzuwenden ...
wSheet.Rows(y).Style = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
Ich verstehe das Problem nicht. Aber hier ist das, was mein Problem gelöst hat.
Gehen Sie zu Excel-Optionen> Speichern> Dateien in diesem Format speichern> Wählen Sie "Excel Workbook (*. Xlsx)" aus. Zuvor wurden meine WorkBooks im [Kompatibilitätsmodus] geöffnet. Jetzt werden sie im normalen Modus geöffnet. Die Range-Funktion funktioniert gut damit.
Ich hatte einen Fehler mit genauem Code, als ich versuchte, ein Array von Zellen zu range.Value zuzuweisen. In meinem Fall war es das Problem mit dem falschen Datenformat. Das Datenformat der Zelle wurde auf DATE gesetzt, der Benutzer hat jedoch einen Fehler gemacht und statt "20.02.2013" das Datum "20.02.0213" eingegeben. Das COM-Objekt von Excel lehnte das Jahr '0213' ab und warf eine Ausnahme mit diesem Fehler.
Ich stimme mit dem Beitrag von Hugh W überein "Ich schließe daraus, dass derselbe Fehlercode verwendet wird, um mehrere nicht verwandte Probleme anzuzeigen"
Andere Beiträge haben nicht erwähnt, dass dieser Fehler häufig auftritt, wenn das Arbeitsblatt gesperrt ist. Obwohl ich nicht jedes Szenario getestet habe, scheint es, dass alles, was Sie in Excel nicht tun können, wenn ein Arbeitsblatt gesperrt ist, diesen Fehler auslösen, wenn Sie versuchen, dies über VSTO/Com zu tun, während das Blatt gesperrt ist. Z.B. Ändern von Stilartefakten (Schriftart, Schriftgröße, Farbe, Unterstreichung), Ändern der Excel-Überprüfung, Ändern der Spaltenbreite, Zeilenhöhe und Formeln
Ich habe diese Fehlermeldung erhalten, weil ich versucht habe, ein Blatt mit zu vielen Zeichen umzubenennen
Scheint so, als wäre es ein ziemlich allgemeiner Fehler, wenn bei der von Ihnen ausgeführten Operation "etwas schief gelaufen ist". Ich habe beobachtet, dass dies auch auftritt, wenn Sie einen Formelfehler haben und diese Formel einer Zelle zuweisen. Z.B. = fubar ()
Nicht antworten/befürworten diese Antwort , hier posten:
In der Tat kann das Format der Quell-/Zielbereiche beim Verschieben von Daten von einem Bereich in einen anderen diesen Fehler ebenfalls verursachen.
In meinem Fall enthielt der Bereich, den ich kopieren wollte, eine datumsformatierte Spalte, und die Spalte enthielt eine Zelle mit einem ungültigen Datumswert (aufgrund ihres Werts, der eine negative Ganzzahl war, war er nicht einmal formatiert). Der Kopiervorgang zwischen den beiden Bereichen wurde an der besagten Zelle angehalten, was genau die hier diskutierte Fehlermeldung ergab.
Die Lösung in meinem Fall war, Range.Value2 anstelle von Range.Value zu verwenden, wodurch Excel die Formatierung der Zelle als Datum umgangen hat (weitere Details hier ). Dadurch werden Ihre Datums- und Zeitspalten jedoch als Ganzzahlen und Dezimalzahlen dargestellt. Sie können die Formate jedoch in die gewünschten Formate ändern, wenn Sie wissen, wo die Datums- und Zeitwerte zu erwarten sind, indem Sie deren Range/Column/Cell.NumberFormat - Eigenschaft entsprechend einstellen.
Ich habe dieses Problem mit dem folgenden Code gelöst. Bitte verwenden Sie keine anderen Parameter in diesen Funktionen.
mWorkBook = xlApp.Workbooks.Open(FilePath)
mWorkBook.Save();
AUFGELÖST
BEARBEITEN: DIESES IS WEG BESSER !!! .__ Sie brauchen diese alte Funktion nicht, sorry. Mach einfach wie folgt:
Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range["A1", ((Microsoft.Office.Interop.Excel.Range)currentWS.Cells[nRowCount, nColumnCount])];
Das sollte wie ein Zauber wirken. Geben Sie den relevanten Code, den Sie verwenden, in Ihre Frage ein. Lassen Sie die Leute nicht in Kommentaren danach fragen. Ich kann mir vorstellen, dass Sie deshalb abgelehnt wurden.
Ich hatte bei der Ausführung der folgenden Anweisung denselben Fehlercode:
sheet.QueryTables.Add("TEXT" & Path.GetFullPath(fileName), "1:1", Type.Missing)
Der Grund war das fehlende Semikolon (;) nach "TEXT".
Hier ist das Richtige:
sheet.QueryTables.Add("TEXT;" & Path.GetFullPath(fileName), "1:1", Type.Missing)
Für andere wie mich, die die gleiche Ausnahme haben:
Dies kann auch passieren, wenn Sie versuchen, einen Nullwert anstelle von Missing.Value (oder Type.Missing) zu übergeben.
z.B.
Worksheet worksheet = ...;
return worksheet.Range["A1", null]; //This call generates the error 0x800A03EC
return worksheet.Range["A1", Missing.Value]; //This works correctly
Ich habe diese Ausnahme erhalten, weil ich Folgendes eingegeben habe:
ws.get_Range("K:K").EntireColumn.AutoFit();
ws.get_Range("N:N").EntireColumn.AutoFit();
ws.get_Range("0:0").EntireColumn.AutoFit();
Fehler anzeigen? Hinweis: Excel akzeptiert die Indizierung von 1, jedoch nicht von 0 wie C #.
Diese Art von Fehler tritt auch auf, wenn Sie versuchen, Ihre Excel-Tabelle zu öffnen und eine Fehlermeldung auffordert. Sie können einfach sagen, wenn Ihre Excel-Datei beschädigt ist.
Ich habe diesen Fehlercode 0x800A03EC erhalten, als ich versuche, eine in meiner .Net-Anwendung in VS 2017 erstellte Excel-Datei zu speichern. Ich habe die Objekteigenschaft Excel.Application Visible = True geändert und bis zum Fehler ausgeführt. Es wurde versucht, die Schritte manuell in Excel auszuführen, und dann wurde festgestellt, dass die Datei aufgrund fehlender Ordnerberechtigungen nicht gespeichert werden konnte. Ich habe die Schreibberechtigung für den Ordner hinzugefügt, und der Fehler ist verschwunden.
Das gleiche Problem hatte ich auch, als ich eine Anwendung entwickelte, die Projektinhalte in eine Excel-Datei exportiert.
Ich konnte die Lösung für mein Problem nicht in Foren finden. Dann überprüfe ich die maximale Kapazität von Excel und finde unten den Link, der besagt
"Arbeitsblattgröße 1.048.576 Zeilen mal 16.384 Spalten" und dies war in meinem Fall das Problem, ich exportierte mehr als diese Zeilen. Einzelheiten finden Sie unter dem Link
Viele Grüße Prashant Neve