Por lo que puedo ver en la web, esta es una queja bastante común, pero las respuestas parecen ser más raras. El problema es este:
Tenemos una serie de aplicaciones Excel VBA que funcionan perfectamente en varias máquinas de usuarios. Sin embargo, en una máquina se detienen en ciertas líneas de código. Siempre son las mismas líneas, pero esas líneas parecen no tener nada en común entre sí.
Si presiona F5 (ejecutar) después de la detención, la aplicación continúa, por lo que es casi como si se hubiera agregado un punto de interrupción. Intentamos seleccionar 'eliminar todos los descansos' del menú e incluso agregar un descanso y eliminarlo nuevamente.
Hemos tenido este problema con aplicaciones individuales antes y lo hemos 'arreglado' al cortar el código de los módulos, compilarlo y luego pegarlo de nuevo, etc.
El problema ahora parece estar relacionado con Excel en lugar de con un solo .xls, por lo que no estamos seguros de cómo administrar esto.
Cualquier ayuda sería agradecida :)
Gracias,
Philip Whittington
Respuestas:
He encontrado una segunda solución.
Espero que esto ayude a alguien.
fuente
Este problema proviene de una peculiaridad extraña dentro de Office / Windows.
Después de desarrollar el mismo fragmento de código VBA y ejecutarlo cientos de veces (literalmente) en los últimos días, me encontré con este problema en este momento. Lo único que ha sido diferente es que justo antes de experimentar este problema desconcertante, accidentalmente finalicé la ejecución del código VBA con un método poco ortodoxo.
Limpié todos los archivos temporales, reinicié, etc. Cuando ejecuté el código nuevamente después de todo esto, aún recibí el problema, antes de ingresar al primer bucle. Tiene sentido que "presione el botón" Debug "en la ventana emergente, luego presione dos veces [Ctrl + Break] y después de esto puede continuar sin paradas" porque algo en la combinación de Office / Windows no ha liberado la ejecución. Está atascado.
La acción redundante Ctrl + Break probablemente resuelva la ejecución persistente.
fuente
Una solución está aquí :
Pero, después de insertar esta línea de código, ya no pude usar Ctrl + Break. Entonces funciona pero no mucho.
fuente
xlInterrupt
. (También se vuelve a habilitar automáticamente cuando finaliza la ejecución del código). Su otra respuesta funcionó para mí, pero en el peor de los casos, esto podría usarse como una solución temporal. Más información sobre Application.EnableCancelKeyEncontré que presionar ctrl + break mientras la macro no se estaba ejecutando solucionó el problema.
fuente
Intentaría las cosas correctivas habituales: - Ejecute el Limpiador de código VBA de Rob Bovey en su Código VBA - elimine todos los complementos en la PC del usuario, en particular los complementos COM y .NET - Elimine todos los archivos .EXD de los usuarios (incompatibilidades de actualización de MSoft) - Ejecute Excel Detectar y reparar en el sistema de los usuarios: compruebe el tamaño del archivo .xlb del usuario (debe ser 20-30K). Reinicie y elimine todos los archivos temporales de los usuarios.
fuente
Gracias a todos por su aporte. Este problema se resolvió eligiendo REPARACIÓN en el Panel de control. Supongo que esto vuelve a registrar explícitamente algunos de los componentes COM nativos de Office y hace cosas que REINSTALL no. Espero que este último solo revise una lista de verificación y, a veces, acepte lo que está allí si ya está instalado, quizás. Luego tuve un problema por separado al registrar mi propio .NET dll para interoperabilidad COM en la máquina del usuario (a pesar de que esto también funciona en otras máquinas), aunque creo que este fue mi error en lugar de Microsoft. Gracias de nuevo, realmente lo aprecio.
fuente
Me he encontrado con este problema varias veces durante el desarrollo de una aplicación compleja de Excel VBA. A veces, Excel comenzó a romper el objeto VBA al azar. Y el único remedio era reiniciar la máquina. Después de reiniciar, Excel generalmente comenzó a actuar normalmente.
Pronto descubrí que la posible solución a este problema es presionar CTRL + Break una vez cuando la macro NO se está ejecutando. Quizás esto también te pueda ayudar.
fuente
También tuve este problema al usar Excel 2007 con un libro de trabajo foobar.xlsm (macro habilitado) que obtendría el "Código de ejecución ha sido interrumpido" simplemente tratando de cerrar el libro de trabajo en la X roja en la esquina derecha sin macros ejecutándose en todos, o cualquier formulario "inicializar", libro o macros de hoja de trabajo. Las opciones que obtuve fueron "Finalizar" o "Continuar", la depuración siempre estaba atenuada. Lo hice como un póster anterior sugirió Panel de control-> Programas y características-> haga clic derecho en "Microsoft Office Proffesional 2007" (en mi caso) -> cambio-> reparación.
Esto resolvió el problema para mí. Podría agregar que esto sucedió poco después de una actualización de MS y también encontré un complemento en Excel llamado "Team Foundation" de Microsoft que ciertamente no instalé voluntariamente
fuente
Me gustaría agregar más detalles a la respuesta de Stan # 2 por las siguientes razones:
Enfrenté este problema yo mismo más de una docena de veces y, dependiendo de las condiciones del proyecto, elegí entre la respuesta mágica vudú de Stan n. ° 1 o n. ° 2. Cuando seguí enfrentándolo nuevamente, empecé a preguntarme por qué sucede en primer lugar.
También me gustaría agregar una respuesta para usuarios de Mac.
Existen limitaciones con estas dos posibles respuestas:
Puede ocurrir debido a cualquiera de las siguientes razones:
El sistema operativo no asigna recursos del sistema al proceso de Excel. ( Solución: solo hay que iniciar el sistema operativo: la tasa de éxito es muy baja, pero se sabe que funciona muchas veces)
El código P es el código intermedio que se usó en Visual Basic (antes de .NET) y, por lo tanto, todavía se usa en VBA. Habilitó un ejecutable más compacto a expensas de una ejecución más lenta. ¿Por qué estoy hablando de código p? Debido a que a veces se corrompe entre ejecuciones múltiples y archivos grandes o simplemente debido a la instalación del software (Excel) se corrompió en alguna parte. Cuando el código p se corrompe. la ejecución del código sigue siendo interrumpida.Solución: En estos casos, se supone que su código ha comenzado a corromperse y lo más probable es que en el futuro su libro de Excel también se corrompa dándole mensajes como "archivo de Excel corrupto y no se puede abrir". Por lo tanto, como una solución rápida, puede confiar en la respuesta n. ° 1 o la respuesta n. ° 2 según sus requisitos. Sin embargo, nunca ignore los signos de corrupción. Es mejor copiar los módulos de código en el bloc de notas, eliminar los módulos, guardar y cerrar el libro de trabajo, cerrar el Excel. Ahora, vuelva a abrir el libro y comience a crear nuevos módulos con el código copiado anteriormente en el bloc de notas.
Usuarios de Mac, prueben cualquiera de las opciones a continuación y definitivamente funcionarán según la arquitectura de su sistema, es decir, el sistema operativo y la versión de Office
Se lo pondrá en modo de interrupción utilizando las combinaciones de teclas anteriores, ya que la macro suspende la ejecución inmediatamente finalizando la tarea actual. Este es el reemplazo del Paso 2.
xlErrorHandler
junto con laResume
declaración en el controlador de errores si el código de error es 18. Luego, la interrupción se envía al procedimiento en ejecución como un error, atrapable por un error controlador configurado con una instrucción On Error GoTo. El código de error capturable es 18. El procedimiento actual se interrumpe y el usuario puede depurar o finalizar el procedimiento. Microsoft advierte que no use esto si su controlador de errores tiene una declaración de reanudación; de lo contrario, su controlador de errores siempre vuelve a la misma declaración. Eso es exactamente lo que queremos en las interrupciones sin sentido no deseadas de la ejecución del código.fuente
Mi reputación actual aún no permite publicar esto como un comentario. Solución de Stans para ingresar al modo de depuración, presionar dos veces Ctrl + Break, seguir jugando, guardar resolvió mi problema, pero tengo dos giros inesperados:
La estructura de mi proyecto está protegida con contraseña, por lo que para ingresar al modo de depuración primero tuve que ingresar al modo de desarrollador, hacer clic en la estructura del proyecto e ingresar la contraseña.
Mi proyecto es un archivo de plantilla (.xmtl). Abrí el archivo haciendo doble clic que lo abre como .xml con un "1" al final del nombre del archivo anterior. Arreglé el error según las instrucciones de Stans y lo guardé como ese ... archivo 1.xml. Cuando volví a abrir la plantilla, esta vez como plantilla, y quería aplicar la misma corrección de errores a ese archivo, ¡el error desapareció! No cambié este archivo y todavía no tengo ningún error al ejecutar la Macro. Esto significa para mí que el error no está realmente en el archivo, sino en una configuración (oculta) en Excel.
fuente
Vuelva a instalarlo y parchelo :) Aparte de eso, es difícil saberlo.
fuente