Error '-2147417848 (80010108)'

5 envíos / 0 nuevos
Último envío
pacomegia
Imagen de pacomegia
Online
última acción: Hace 7 mins 14 segs
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10345
Error '-2147417848 (80010108)'

El otro día sufrí en mis propias carnes un fenómeno digno de compartir en este foro de sucesos paranormales.

Recientemente he estado realizando un libro en Excel 2002 que emplea filtros avanzados mediante macros para extraer información de un par de listas de datos a una hoja en blanco, que luego es movida a otro libro para poder enviarla por coreo sin tener que enviar el libro completo, sólo esa copia de los datos que cumplen los criterios especificados.

El caso es que mientras con una de las listas de datos todo funciona correctamente, con otra de ellas al tratar de aplicar el filtro avanzado, la macro genera el siguiente error, tras el cual Excel se queda colgado y hay que cerrarlo desde el administrador de tareas porque no responde.

Error en el método 'AdvancedFilter' del objeto 'Range'

 

¿qué raro, porque en un caso funciona, pero en otro no?

Anduve modificando la macro, retocando el orden en que se daban los pasos, pero no hubo manera, con los datos de una hoja sí funcionaba, pero con los datos de otra hoja no.

Busqué en internet, pero sólo encontré un par de páginas con este error que se referían a la creación mediante macros de campos en tablas dinámicas. Obviamente no era mi caso.

 

Probé a realizar el filtro avanzado a mano, para copiar los datos a una hoja en blanco. Con una hoja funcionaba, pero con la hoja que provocaba el error con la macro Excel mostraba un mensaje de error, de esos de "Excel se cerrará e intentará recuperar el trabajo", así que tampoco funciona a mano.

Sin embargo, si el destino del filtro era la misma hoja, pero unas filas más abajo, sí que funciona manualmente.¿?

 

Lo probé en un equipo con Excel 2007 y todo funcionó correctamente. Deduje entonces que se trataba de algún problema misterioso de la versión 2002 a la que parecían no gustarle algunos de mis datos.

 

El problema debía radicar en algo que tuviesen diferentes las hojas con los datos, y que hacía que con una de ellas sí funcionase la macro y con la otra no. ¿pero el qué?

Ambas tenían textos, fechas, importes, ... hasta que al fin encontré una diferencia: en la hoja en la que se producía el error tenía en una de las columnas un formato condicional mientras que en la hoja que no daba problemas no tenía estos formatos.

 

Me decidí a eliminar el formato condicional y eureka todo funciona según lo esperado.

Volví a aplicar el formato condicional a toda la columna y de nuevo el error. ¡Confirmado! se trata del formato condicional.

 

Pero no lo vamos a dejar aquí, porque necesito el formato condicional para destacar visualmente algunos datos. ¿qué podría ser?

 

Tras varias pruebas creo que dí con ello.

El formato condicional estaba definido para toda la columna, para que ya estuviese definido en los nuevos datos que se fueran añadiendo. Esto incluía también la primera fila, donde se encontraba el nombre del campo (realmente aquí no se necesitaba el formato condicional).

Tras definir el formato condicional en toda la columna, lo borré del nombre del campo, para que sólo estuviese en las celdas con datos. Vuelta a probar la macro con el filtro avanzado con destino en una hoja en blanco y ¡Prueba superada! 

 

Espero que si alguien tiene el mismo problema, aunque raro, le haya servido de ayuda para resolverlo, a mí me trajo por la calle de la amargura un par de días.

Si no sabes cómo darme las gracias, te doy una idea.

 

 

 

visitante (no verificado)
Imagen de visitante
Re: Error '-2147417848 (80010108)'
Flaco, sos un capo! No entiendo nada de macros, me baje un add-in para poder ponerle pattern a los graficos ya que en Excel2007 esa opcion no existe. Pero me dejaba aplicar los patterns en unos graficos y en otros no, ubicados en distintas spreadsheets. Gracias a tu post, corte y pegue los graficos en la spreadsheet en la que todo funcionaba bien y el add-in me anduvo perfecto! Gracias!!
ofaic (no verificado)
Imagen de visitante
Gracias

Gracias hno me salvaste. Saludos

Cron
Imagen de Cron
Offline
última acción: Hace 4 horas 15 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12285
Hoy he recibido el mismo

Hoy he recibido el mismo error. Como indicas en tu comentario, en mi caso tenía que ver con una tabla dinámica. Me he vuelto loco buscando la razón, y resultó ser algo lógico.

Primero, no tiene que ver con la versión (en mi caso). Tengo el 365, versión 1902 (es decir, actualizado a febrero de 2019)

Estaba haciendo un refresh de la tabla dinámica respondiendo al evento Change de la hoja. Básicamente, tengo una tabla de datos, y quiero que cuando actualice los datos, se actualice la TD automáticamente (soy muy vago, lo sé, pero si lo puede hacer Excel, ¿por qué lo tengo que hacer yo?)

Cada vez que hacía el refresh, cascaba con este error.

Estuve mirando si tenía que ver con que la orden refresh estuviera en el módulo de la hoja, en vez de en un módulo independiente. No era eso.

Como a veces Excel se hace un lío si llamas a la hoja Activesheet o de alguna otra manera, probé a asignar la tabla dinámica a un objeto. Funcionó, pero seguía sin actualizar...

 

Finalmente, el problema tenía que ver con el evento Change de la hoja. Al lanzarse, enviaba el refresh a la TD, y esta al actualizarse volvía a lanzar el evento Change... De manera que teníamos una recursividad no controlada.

Estimo que el error debe tener que ver con la prevención de esta recursividad, o con el abuso de memoria al producirse.

Simplemente limitando el rango de celdas con las que se lanza el refresh, de manera que no se relanzara al actualizar la TD ya se solucionó. Así:

if Target.column < 6 then

    blabla.refresh

end if

Esta es una operación recomendable siempre que se utilice el evento Change.

Imagino que, en tu caso, el formato condicional producía algún tipo de recursividad también.

 

Un saludo

Javier4321 (no verificado)
Imagen de visitante
Mismo error, pero pegando imagen...

Mismo error, aunque esta vez intentando pegar como imagen. Versión de Excel: 2013.

(Error en el método 'Paste' del objeto 'Pictures')

Mismo suceso paranormal: en una hoja funciona, en otra del mismo libro, no.

Intenté ver si se quedaba colgado al hacer la operación manualmente, y los muy cucos han deshabilitado la opción "pegar como imagen" en la hoja que no funciona (esto no me indica por qué sucede, pero agiliza la detección de la circunstancia que genera el error).

Yo no tengo formato condicional en la pestaña que no funciona, pero sí tablas dinámicas.

Antes de probar a eliminar las tablas dinámicas, pruebo a MOSTRAR unas FILAS que estaban OCULTAS y... no me pregunten por qué, pero ya funciona.

Más paranormal aún: en la hoja que sí funciona también tengo filas ocultas, pero no tablas dinámicas.

Otro dato: fijando la altura de las filas a 0 (en vez de ocultarlas) sí permite la ejecución del código sin problemas.