En este grupo En todos

Foro de Excel



Excel de cae al correr una macro.

gonzalo
Analisis de sistema duocuc- pontificia...
Escrito por Gonzalo Alarcon
el 01/06/2012

Estimados Amigos:

Tengo el siguiente problema.

Tengo una archivo excel con varios formularios y macros, estos sacan informacion de una base de datos (access) que esta alojada y compartida en un disco de red.

Resulta que al ejecutar una macro excel se cae y arroja este mensaje:

Microsoft Office Excel ha detectado un problema y debe cerrarse. Sentimos los inconvenientes ocasionados.

Puede que se pierda la informacion que esta utilizando ..... Etc.

Despues de esto se cierra todos los excel que esten abiertos.

He cambiado varias veces el modo de ejecutar esta macro, pero siempre con el mismo resultado y lo mas curioso es que al solo hecho de abrir el editor de visual basic (sin realizar ningun cambio, solo abriendolo) y volver a correr la macro funciona perfecto sin ocasionar el problema hasta la proxima vez que se habra la planilla.

Alguna sugerencia para este problema.?

Gracias

Saludos


Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 01/06/2012

Hola! Gonzalo.
Comienza por determinar cual es la línea que te genera el error mediante una rutina de atrapamiento. Por ejemplo:
______________________

Sub TuMacro()
On Error GoTo Ctrl_Error
(parte de tu código)
On Error Goto 0
(sigue tu código)
...
...
Exit Sub

Ctrl_Error:
MsgBox Err. Number & vbLf & Err. Description
End
End Sub
______________________

La idea es que vayas "desplazando" hacia abajo el bloque:

On Error GoTo Ctrl_Error
On Error Goto 0

hasta que consigas "envolver" (o sea: localizar) la región del código que te genera el problema.

Luego vendrá la etapa de decidir cual es la solución al problema de fondo.

Saludos, Cacho R.

Gonzalo Alarcon
Analisis de sistema duocuc- pontificia...
Escrito por Gonzalo Alarcon
el 01/06/2012

Hola Cacho

Primero que todo, gracias por la pronta respuesta.

Te comento que he estado probando, pero no consigo que muestre el error, comence en las primeras lines y se sigue cayendo y no muestra ningun error, solo el rectangulo que excel dejo de funcionar...

Tengo incorporado un progresbar y lo he separado segun los procesos que va ejecutando la macro, y creo que el problema se produce cuando abre la base de datos access, ya que se cae en ese tiempo del progresbar, he revisado la carpeta en la que esta guardada la base de datos access y queda abierta por el cierre inesperado de excel y no alcanza a llegar a las lineas en donde se cierra la base de datos

este codigo utilizo para abrir la base de datos:

Dim datConnection As ADODB. Connection

Dim recset As ADODB. Recordset

Dim strDB As String


Set datConnection = New ADODB. Connection

Set recset = New ADODB. Recordset

DatConnection. Open "Provider=Microsoft.Jet.OLEDB.4. 0;" & "Data Source =" & strDB & ";"

recset. Open "SELECT * FROM BD where cl='" & TextBox7 & "'", datConnection, adOpenDynamic, adLockBatchOptimistic


Tambien pense en algun momento que podia ser la red, ya que demoraba mucho en abrir la base de datos, para descartar esto, la copie en mi escritorio para ejecutarla en modo local, y el problema se da igual.... Lo curioso de esto como comentaba anteriormente es que al momento de abrir el editor de visualbasic, el problema desaparece y no da error hasque que se vuelve a abrir excel


Saludos

Gonzalo Alarcon
Analisis de sistema duocuc- pontificia...
Escrito por Gonzalo Alarcon
el 01/06/2012

Ah, se me olvido mencionar que al momento de abrir el editor de VBA y deja de aparecer el problema, ahi comienza a funcionar la instruccion On Error GoTo Ctrl_Error, mostrando 0 en donde la coloque, incluso dejando la macro completa


Saludos

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 01/06/2012

Dos comentarios:

- No entiendo que es eso de "Abrir el editor de VBA". Es decir: ¿Abres el editor de VBA y ejecutas la macro en el modo depuración (con F8), o es otra cosa lo que quieres significar?

- No estoy seguro que te encuentres utilizando la rutina de "atrapamiento del error" del modo adecuado, de modo que: ¡Olvídalo!

Intenta con esto otro:
a) Antes de la línea que tú creas que te introduce el error coloca:

MsgBox "Estoy controlando..."
End

Corre la macro: si el error se produce después de lo anterior, lógicamente verás el mensaje y terminará la macro (por el End)

b) Establecido (con lo anterior) un punto hasta donde la macro trabaja bien, quita las dos líneas anteriores y colócalas una o dos líneas más abajo.

Corre la macro: si el error se produce después de lo anterior, lógicamente verás el mensaje y terminará la macro. Si -por el contrario- el error se produce antes de las dos líneas, entonces ya tendrás localizada con precisión la fuente del error.

c) Si tu código se deriva por rutinas secundarias (mediante llamadas Call), deberás seguir esas subrutinas intercalando -donde creas necesario- las dos líneas ya mencionadas.

En fin: ¡A seguir buscando!...

Gonzalo Alarcon
Analisis de sistema duocuc- pontificia...
Escrito por Gonzalo Alarcon
el 02/06/2012

Si, es el depurador.

Si corro la macro, linea por linea (F8), no hay ningun problema, y este error no vuelve a aparecer hasta que se abre nuevamente excel. Es mas, como decia, tampoco es necesario correr la macro paso a paso, tan solo abriendo este depurador (alt+f11), el error ya no aparece.

Seguire intentando con la rutina.

Saludos


Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 11/06/2012

Hola Gonzalo:

Seguramente tu archivo excel tiene la extensión xlsm.

Cuando arranqués tu archivo y antes de correr ninguna macro dale guardar como pulsando la tecla f12 : y guardalo como archivo binario (xlsb). Este formato tiene muchas ventajas, entre ellas que es notoriamente más liviano (50%) y te maneja muy bien los códigos vba. Probá

Atte. Willan

Gonzalo Alarcon
Analisis de sistema duocuc- pontificia...
Escrito por Gonzalo Alarcon
el 14/06/2012

Gracias Willan, probare.

Ademas comento que he probado linea por linea en mi codigo la opcion que me dio Cacho, pero no ha mostrado error....

No se que pueda ser....

Cuando abro el excel... Y ejecuto esta macro, excel se cae completamente, pero si antes de correrla, abro el depurador (Alt+f11) y solo veo el codigo, el problema no vuelve a producirse este error, hasta que abro el excel nuevamente.

Y mas curioso aun, esto ocurre a veces, no siempre. Si fuera problema con el codigo deberia ocurrir cada vez que la ejecuto...

Saludos


Gonzalo Alarcon
Analisis de sistema duocuc- pontificia...
Escrito por Gonzalo Alarcon
el 18/06/2012

Les comento que he grabado el archivo en formato. Xlsm y. Xlsb, y no ha presentado problemas en windows xp...

NO asi en Windows 7, es este, parte bien, pero ejecutar varias vices una macro, comienza a arrojar distintos error, como por ejemplo que no se encuentran los objetos. Siempre los muestra cuando se llama un formulario.


Saludos

Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 04/08/2013

Hola Gonzalo:

Más vale tarde que nunca. Me pasaba muy seguido lo descrito por tí. Pero ya pille la solución.

1. - Clic en el comando Programador

2. - Clic en seguridad de macros (triangulo amarillo)

3. - Confiar el acceso al modelo de objetos de proyectos VBA.... ¡Activalo!