visual studio interopservices from excepción 0xfffffff8 0x800a03ec c# excel exception interop add-in

c# - interopservices - exception from hresult 0x800a03ec visual studio



Excepción de HRESULT: 0x800A03EC Error (11)

Este es un error COM de Excel común pero mal documentado. Lo he documentado como "NAME_NOT_FOUND", lo que significa que la capa COM de Excel está deshabilitada y no puede encontrar la propiedad COM o el nombre del método.

Recibo este error de forma consistente cuando ejecuto el código COM mientras Excel está ''ocupado'', por ejemplo, si configura un temporizador que iniciará el código, y el código comienza a ejecutarse mientras el usuario está editando una celda o presionando el botón del mouse, luego siempre obtendrás este error. Este error solo ocurre cuando el código se ejecuta en el hilo principal de Excel, pero parece ser el equivalente al error VBA_E_IGNORE = 0x800AC472, que se obtiene al llamar al modelo de objetos COM de Excel desde otro hilo, mientras que Excel está ''ocupado''.

La única solución parece ser volver a intentar (con un pequeño retraso) la llamada COM hasta que tenga éxito, cuando Excel ya no esté ''ocupado''.

Obtengo el error "HRESULT: 0x800A03EC" al ejecutar el complemento de Excel con el siguiente código:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range; string before = rng.Value2; string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"/s+", ""); rng.set_Value(cleanV);

Cuando ocurre un error, X e Y se establecen en 1, por lo que no se infringe el rango de Excel. Busqué extensamente e intenté varias formas de establecer el valor de la celda (por ejemplo, Celdas [x, y], Range.set_Value ()), pero estoy en la pérdida de por qué ocurre este error y cómo evitarlo.

Cualquier ayuda es muy apreciada.

A continuación están los detalles de la excepción:

System.Runtime.InteropServices.COMException was unhandled by user code HResult=-2146827284 Message=Exception from HRESULT: 0x800A03EC Source="" ErrorCode=-2146827284 StackTrace: at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value) at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:/Users/dshevelev/Documents/Visual Studio 2012/Projects/ImportValidation/ImportValidation/ThisAddIn.cs:line 354 at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:/Users/dshevelev/Documents/Visual Studio 2012/Projects/ImportValidation/ImportValidation/ThisAddIn.cs:line 123 at ImportValidation.ThisAddIn.mapColumns() in c:/Users/dshevelev/Documents/Visual Studio 2012/Projects/ImportValidation/ImportValidation/ThisAddIn.cs:line 493 at ImportValidation.Ribbon1.button6_Click(Object sender, RibbonControlEventArgs e) in c:/Users/dshevelev/Documents/Visual Studio 2012/Projects/ImportValidation/ImportValidation/Ribbon1.cs:line 55 at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control) at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args) at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args) at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters) InnerException:


Obtuve el mismo error al usar DLL de Excel 2003 e intentar escribir en la columna 257.a Excel 2003 limita la columna máxima por hoja de cálculo a 256, lo que plantea esta excepción.

Para conocer las limitaciones detalladas de Excel 2003, consulte http://office.microsoft.com/en-001/excel-help/excel-specifications-and-limits-HP005199291.aspx

A partir de Excel 2007, la limitación de columna se incrementa a 16384 columnas, consulte http://office.microsoft.com/en-001/excel-help/excel-specifications-and-limits-HP010073849.aspx


Obtuve el mismo error cuando intenté exportar un archivo grande de Excel (~ 150,000 filas) Reparado con el siguiente código

Application xlApp = new Application(); xlApp.DefaultSaveFormat = XlFileFormat.xlOpenXMLWorkbook;


Obtuve el mismo error en esta línea

Object temp = range.Cells[i][0].Value;

Resuelto con índice basado en cero

Object temp = range.Cells[i][1].Value;

¿Cómo es posible que los tipos que crearon esta biblioteca pensaran que era una buena idea usar indexación no basada en cero?


Recibí el mismo error hace un tiempo. El problema era que mi archivo XLS contenía más de 65531 registros (500 mil para ser precisos). Estaba intentando leer un rango de celdas.

Excel.Range rng = (Excel.Range) myExcelWorkbookObj.UsedRange.Rows[i];

La excepción se produjo al intentar leer el rango de celdas cuando mi contador, es decir, ''i'', excedió este límite de 65531 registros.


Sé que esto es viejo, pero solo para lanzar en mi experiencia. Me encontré con esto esta mañana. Resulta que nuestro error no tiene nada que ver con el límite de línea .xls o el índice de matriz. Es causado por una fórmula incorrecta.

Estaba exportando de la base de datos a Excel una hoja sobre mis clientes. Alguien =90Erickson-King nombre del cliente como =90Erickson-King y aparentemente esto está bien como campo de tipo cadena en la base de datos, sin embargo, dará como resultado un error como fórmula en Excel. En lugar de mostrar #N/A como cuando estás usando Excel, el programa simplemente se congeló y derramó ese error 0x800A03EC un tiempo después.

Corregí esto eliminando el signo igual y el guión en el nombre del cliente. Después de eso, exportar salió bien.

Supongo que este código de error es un poco demasiado general ya que se ve a las personas informando una gran variedad de causas posibles.


Tengo este error también ...

ocurre cuando save to filepath contiene caracteres no válidos, en mi caso:

path = "C:/somefolder/anotherfolder/file.xls";

Tenga en cuenta la existencia de ambos / y /

* También puede ocurrir si intenta guardar en el directorio que aún no existe.


Tuvimos el mismo problema y encontramos la solución:

Por favor, crea esta carpeta. C: / Windows / SysWOW64 / config / systemprofile / Desktop · Windows 2008 Server x86
Por favor, crea esta carpeta. C: / Windows / System32 / config / systemprofile / Desktop


Vaya a Opciones de Excel> Guardar> Guardar archivos en este formato> Seleccione "Libro de Excel (* .xlsx)". Este problema se produce si está utilizando una versión anterior del archivo de Excel (.xls) en lugar de .xlsx. La versión anterior no permite más de 65k filas en la hoja de Excel.

Una vez que haya guardado como .xslx, intente ejecutar su código de nuevo.

editar ----

Al analizar más su problema, parece que el problema podría ser específico de la configuración regional. ¿Funciona el código en otra máquina? ¿Qué valor tiene la célula? ¿Es formato de fecha y hora? Echa un vistazo aquí:

http://support.microsoft.com/kb/320369

http://blogs.msdn.com/b/eric_carter/archive/2005/06/15/429515.aspx


Veo que esta es una publicación anterior, pero me encontré con ella cuando intentaba solucionar el mismo error y quería compartir mi solución. Resultó que, al intentar exportar a excel, había un "=" al comienzo de un comentario en una celda. Ejemplo "= bloqueado" cuando el comentario debería haber dicho "atascado". Creo que Excel pensó que era una fórmula.


Verifica tus índices de inicio. Comienza desde 1 no 0 para Microsoft.Office.Interop.Excel range objects. He recibido el mismo error debido a mi valor de inicio de bucle.