HRESULT: 0x800A03EC su Worksheet.range

Sto ottenendo HRESULT: 0x800A03EC sul metodo Worksheet.range. Il numero di righe è più di 70K. Office 2007.

Codice:

Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]]; 

Qui il mio conteggio delle puntate è superiore a 65530. Interrompe questa funzione. Ho osservato che si interrompe solo quando il conteggio delle righe supera i 65530.

Questo problema si verifica se si utilizza un foglio compatibile con le versioni precedenti (a .xls) anziché un file .xlsx

Per consentire l’apertura dei fogli nella versione precedente all’ufficio 2007, non può contenere più di 65.000 file. Puoi controllare il numero di righe nel tuo foglio usando ctrl + freccia giù fino a toccare il fondo. Se si tenta di ottenere un intervallo maggiore di quel numero di righe, verrà creato un errore

Stavamo ricevendo lo stesso. L’eccezione era

Stacktrace: in Microsoft.Office.Interop.Excel._Workbook.SaveAs (nome file object, object FileFormat, password object, object WriteResPassword, object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object Text VisualLayout, Object Local) `

con un’eccezione interiore di

Eccezione da HRESULT: 0x800A03EC 2012-11-01 10: 37: 59`

Siamo stati in grado di risolvere il problema con le informazioni di questo post , che cito qui per comodità …

  1. Accedi al server come amministratore.
  2. Vai su “Start” -> “Esegui” e inserisci “taskmgr”
  3. Vai alla scheda del processo in Task Manager e seleziona “Mostra processi da tutti gli utenti”
  4. Se sono presenti voci “Excel.exe” nell’elenco, fare clic con il tasto destro del mouse sulla voce e selezionare “Termina processo”
  5. Chiudi il task manager.
  6. Vai su “Start” -> “Esegui” e inserisci “services.msc”
  7. Arresta il servizio automatizzando Excel se è in esecuzione.
  8. Vai su “Start” -> “Esegui” e inserisci “dcomcnfg”
  9. Verrà visualizzata la finestra dei servizi del componente, espandere “Console Root” -> “Computer” -> “DCOM Config”
  10. Trova “Applicazione Microsoft Excel” nell’elenco dei componenti.
  11. Fare clic destro sulla voce e selezionare “Proprietà”
  12. Vai alla scheda “Id quadro” nella finestra di dialogo delle proprietà.
  13. Seleziona “L’utente interattivo”.
  14. Fai clic sul pulsante “OK”.
  15. Passare alla console dei servizi
  16. Avvia il servizio automatizzando Excel
  17. Testare nuovamente l’applicazione.

Osservando le varie risposte di cui sopra e attingendo alla mia recente esperienza (ho ottenuto questo codice di errore facendo qualcosa di completamente non correlato – impostando Application.Calculation ), concludo che lo stesso codice di errore è usato per indicare più problemi non correlati. Quindi @Garreh dovresti probabilmente fare una nuova domanda (non che qualcuno sia in grado di aiutarti basandosi solo sul codice di errore). Ho visto la stessa cosa lavorare con Word interop da C #, dove lo stesso HRESULT sembra essere usato per quasi ogni tipo di errore. Non ho mai trovato alcuna documentazione Microsoft soddisfacente su cosa potrebbero significare i codici.

Ho riscontrato questo problema.

Scoperto che da qualche parte nel mio codice lo stavo chiedendo di contare a partire da 0 (come faresti in un codice C #).

Si scopre che il conteggio di Excel inizia da 1.

Questo potrebbe anche essere causato se non hai spazio sulla partizione in cui stai salvando.

Ho controllato la mia HD e ho ottenuto il massimo. Lo spostamento di alcuni file non necessari in una partizione diversa ha risolto il mio problema.

Semplicemente, il file excel è corrotto. La soluzione migliore è cambiare / riparare il file (creare una copia del file esistente e rinominarlo)

Non capisco il problema. Ma ecco la cosa che ha risolto il mio problema.

Vai a Opzioni di Excel> Salva> Salva file in questo formato> Seleziona “Cartella di lavoro di Excel (*. Xlsx)”. In precedenza, i miei workbook si aprivano in [Compatibuility Mode] e ora si aprono in modalità normale. La funzione Range funziona perfettamente con questo.

Solo FYI, ho ottenuto l’errore cercando di applicare lo stile di riga ….

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

Questo non sta rispondendo direttamente alla domanda, ma stavo ricevendo questo errore quando aprivo un file xlsx. Il problema era che stavo usando le barre in avanti nel mio percorso di file. Vedi anche https://stackoverflow.com/a/24635904/5932003 . Funzionava nelle versioni precedenti di Excel, ma non con la Versione 1711 (Build 8730.2127).

Sono stato in grado di diagnosticare il problema usando IDispatch-> Invoke (…, EXCEPINFO, …). L’object EXCEPINFO conteneva una descrizione utile di cosa è andato storto. Ero in C ++ land, ma ho il sospetto che il codice C # simile a questo post SO farà il trucco: Packaging IDispatch Richiama con parametri in C # (con DISPPARAMS) .

EDIT: QUESTO E ‘MEGLIO MEGLIO !!! Non hai bisogno di quella vecchia funzione, mi dispiace. Fai come segue:

 Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range["A1", ((Microsoft.Office.Interop.Excel.Range)currentWS.Cells[nRowCount, nColumnCount])]; 

Questo dovrebbe funzionare come un fascino. E per riferimento futuro, inserisci il codice pertinente che stai utilizzando all’interno della tua domanda. Non far sì che la gente lo chieda nei commenti. Immagino che sia per questo che hai downvoted.

Ho avuto un errore con codice esatto quando ho provato ad assegnare una serie di celle a range.Value. Nel mio caso era il problema con un formato di dati errato. Il formato dei dati della cella è stato impostato come DATE ma l’utente ha commesso un errore e invece di “20.02.2013” ha inserito la data “20.02.0213”. L’object COM di Excel ha rifiutato di prendere l’anno ‘0213’ e ha gettato un’eccezione con questo errore.

Ho anche affrontato lo stesso problema, quando stavo sviluppando un’applicazione che esporta il contenuto del progetto in un file excel.

Non sono riuscito a trovare la risoluzione nei forum per il mio problema, quindi controllo la capacità massima di Excel e trovata sotto il link che dice

“Dimensione del foglio di lavoro 1.048.576 righe per 16.384 colonne” e questo era il problema nel mio caso, stavo esportando più di quelle file. Fare riferimento al link sottostante per i dettagli

http://answers.microsoft.com/en-us/office/forum/office_2013_release-excel/with-excel-2013how-many-rows-will-this-contain/271264fb-3ab8-4c5b-aa0d-7095c5ac6108

Saluti Prashant Neve

Non potendo rispondere / approvare questa risposta , quindi postare qui:

In effetti, il formato degli intervalli di origine / destinazione quando si spostano dati da un intervallo a un altro potrebbe causare anche questo errore.

Nel mio caso, l’intervallo che volevo copiare conteneva una colonna formattata per data e la colonna conteneva una cella con un valore di data non valido (non era nemmeno formattata a causa del suo valore, che era un numero intero negativo). Quindi l’operazione di copia tra i due intervalli si è arrestata in corrispondenza di detta cella producendo il messaggio di errore qui descritto.

Nel mio caso, la soluzione consisteva nell’usare Range.Value2 invece di Range.Value , che ha impedito a Excel di formattare la cella come data (maggiori dettagli qui ). Tuttavia, questo renderà le colonne della data e dell’ora da visualizzare come numeri interi e decimali. Tuttavia, sarà ansible modificare i formati in quelli desiderati se si sa dove aspettarsi i valori di data e ora impostando la proprietà Range / Column / Cell.NumberFormat di conseguenza.

Ho avuto lo stesso codice di errore durante l’esecuzione della seguente dichiarazione:

 sheet.QueryTables.Add("TEXT" & Path.GetFullPath(fileName), "1:1", Type.Missing) 

Il motivo era il punto e virgola mancante (;) dopo “TEXT”.

Ecco quello corretto:

 sheet.QueryTables.Add("TEXT;" & Path.GetFullPath(fileName), "1:1", Type.Missing) 

Ho ottenuto questa eccezione perché ho digitato:

 ws.get_Range("K:K").EntireColumn.AutoFit(); ws.get_Range("N:N").EntireColumn.AutoFit(); ws.get_Range("0:0").EntireColumn.AutoFit(); 

Vedi un errore? Suggerimento: Excel accetta l’indicizzazione da 1, ma non da 0 come fa C #.

Ho ricevuto questo errore perché ho provato a rinominare un foglio con troppi caratteri

Sono d’accordo con Hugh W post “Concludo che lo stesso codice di errore è usato per indicare più problemi non correlati”

Altri post non hanno menzionato che questo errore si verifica frequentemente se il foglio di lavoro è bloccato. Sebbene non abbia provato ogni scenario, sembra che tutto ciò che non si può fare in Excel quando un foglio di lavoro viene bloccato genera questo errore se si tenta di farlo tramite VSTO / Com mentre il foglio è bloccato. EG Modifica di qualsiasi artefatto di stile (carattere, dimensione del carattere, colore, sottolineatura), modifica della convalida di Excel, modifica delle larghezze delle colonne, delle altezze delle righe, delle formule

Questo tipo di errore si verifica anche quando si tenta di aprire il foglio Excel e se viene visualizzato un messaggio di errore. semplicemente puoi dire quando il tuo file excel è corrotto.

Ho risolto questo problema utilizzando il codice seguente. Si prega di non utilizzare altri parametri in queste funzioni.

 mWorkBook = xlApp.Workbooks.Open(FilePath) mWorkBook.Save(); 

RISOLTO