wake-up-neo.com

HRESULT: 0x800A03EC für Worksheet.range

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.

20
Cannon

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 

24
Eddy

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

  1. Melden Sie sich als Administrator am Server an.
  2. Gehen Sie zu "Start" -> "Ausführen" und geben Sie "taskmgr" ein.
  3. Gehen Sie auf die Prozessregisterkarte im Task-Manager und markieren Sie "Prozesse von allen Benutzern anzeigen".
  4. Wenn die Liste "Excel.exe" enthält, klicken Sie mit der rechten Maustaste auf den Eintrag Und wählen Sie "Prozess beenden".
  5. Schließen Sie den Task-Manager.
  6. Gehen Sie zu "Start" -> "Ausführen" und geben Sie "services.msc" ein.
  7. Beenden Sie den Dienst, der Excel automatisiert, wenn es ausgeführt wird.
  8. Gehen Sie zu "Start" -> "Ausführen" und geben Sie "dcomcnfg" ein.
  9. Das Fenster mit den Komponentendiensten wird geöffnet. Erweitern Sie "Console Root" -> "Computer" -> "DCOM Config".
  10. Suchen Sie in der Liste der Komponenten nach "Microsoft Excel-Anwendung".
  11. Klicken Sie mit der rechten Maustaste auf den Eintrag und wählen Sie "Eigenschaften".
  12. Gehen Sie im Eigenschaftendialog zur Registerkarte "Identität".
  13. Wählen Sie "Der interaktive Benutzer".
  14. Klicken Sie auf die Schaltfläche "OK".
  15. Wechseln Sie zur Servicekonsole
  16. Starten Sie den Dienst, der Excel automatisiert
  17. Testen Sie Ihre Bewerbung erneut.
19

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.

14
Cald

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.

12
Hugh W

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. 

5
Patrickmoe

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

3
Sonio

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

1
kostasvs

Nur zu Ihrer Information, bekam den Fehler beim Versuch, den Zeilenstil anzuwenden ...

wSheet.Rows(y).Style = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
1
htm11h

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. 

1
Cannon

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. 

0
Evgeny Sobolev

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 

0
JimbobTheSailor

Ich habe diese Fehlermeldung erhalten, weil ich versucht habe, ein Blatt mit zu vielen Zeichen umzubenennen

0
Blobby

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 ()

0
Dan Sorak

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

0
Pankaj Garg

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.

0
k.schroeder31

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)
0
Beppe Serra

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
0
Ruben Giaquinto

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

0
Pedro

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.

0
Arun

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. 

0
MarkF

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

http://answers.Microsoft.com/de-de/office/forum/office_2013_release-Excel/with-Excel-2013wie-many-rows-will-this-container/271264fb-3ab8-4c5b-aa0d-7095c5ac6108

Viele Grüße Prashant Neve

0
PrashantNeve