¿Hay alguna manera de imprimir un mensaje a la consola desde una macro vba de Excel? Tengo una pequeña aplicación de consola VB .NET que llama a una macro de Excel, y me gustaría que los mensajes de error del código de macro se impriman en la consola. Debug.print no ayuda, ya que solo se imprime en la ventana inmediata. ¿Algunas ideas?¿Cómo puedo escribir en la consola desde el código vba de Excel?
Respuesta
Descubrí que no hay comunicación entre un proyecto .NET de VB y una macro que llama: la macro no puede acceder a la consola de la VB y no puede devolver una excepción. Si se produce un error en la macro, el código VB .NET no lo detecta. El proyecto VB solo llama a la macro, se ejecuta y luego el proyecto continúa ejecutándose, sin conocimiento de lo que sucedió en la macro. La forma en que solucioné esto fue que el macro escribió el error en una celda específica designada en la hoja de cálculo de Excel, y luego el proyecto VB lo leyó y lo usó para determinar si había un error, y luego lo escribió en el consola si hubiera. Una especie de trampa, pero funcionó. ¡Gracias por todas las sugerencias!
Pase una ruta de archivo y escriba todos los errores en el archivo.
Puede probar el uso de Debug.WriteLine()
para generar su información de depuración en la ventana Visual Studio Output, pero tengo la molesta sensación de que no puede hacer eso a menos que esté escribiendo una aplicación de consola.
Si de hecho no funciona, intente utilizar el método Console.SetOut()
para redirigir las cadenas Console.WriteLine()
a un StreamWriter, que podría ser un archivo en su máquina. No es el ideal, pero posiblemente una solución viable?
Puede crear un componente COM en su aplicación VB.NET al que puede llamar desde VBA y escribir en la consola de su aplicación.
¿Vale la pena? No lo creo. – ChaosPandion
Depende de la situación. Tenemos una aplicación .net que hace algunas cosas y luego lanza informes de Excel. Los datos para los informes se obtienen a través de una interfaz COM de VBA en Excel para que el usuario pueda personalizar el informe. Actualmente no, pero puedo ver el momento en que es posible que tengamos que mostrar las actualizaciones de estado del informe en la aplicación principal que lanzó los informes. – burnside
¿Por qué no devuelve una cadena que contiene los mensajes de error de la macro al código .Net, y hace que el código .Net la escriba en la consola?
Alternativamente, si estos son realmente errores, provoque errores de la macro usando Err.Raise
y manipúlelos en el código .Net con un bloque Try Catch
que escribe los detalles en la consola.
tuve que usar Debug.Print() como Debug.Write() y Console.WriteLine() no funciona
- 1. ¿Cómo puedo hacer uso de objetos .NET desde Excel VBA?
- 2. Cómo probar la unidad Código de Excel VBA
- 3. Reemplazar texto en el código VBA de archivos de Excel
- 4. ¿Cómo funciona la protección mediante contraseña del código Excel VBA?
- 5. No puedo VBA escribir datos en celdas en Excel 2007/2010 dentro de una función
- 6. Subcadena de Excel VBA
- 7. matriz en Excel VBA
- 8. ¿Cómo generar XML desde una macro de Excel VBA?
- 9. Escribir una fórmula en una celda de Excel usando VBA
- 10. Cómo acceder a Checkbox desde VBA en Excel 2007
- 11. ¿Cómo guardar el código VBA en la biblioteca DLL?
- 12. ¿Cómo llamo al cliente WCF desde Excel 2003 VBA?
- 13. ¿Cómo programar código una función 'deshacer' en Excel-Vba?
- 14. Abrir Google Chrome desde VBA/Excel
- 15. Documentación del código VBA para Excel Auto Complete
- 16. ¿Forma idiomática de escribir el código de Clojure para leer líneas repetidamente desde la consola?
- 17. pueblan valores únicos en una matriz de VBA desde Excel
- 18. ¿Cómo escribir en la consola en fasm?
- 19. OnClick en Excel VBA
- 20. Excel VBA - xlDown
- 21. Es Excel VBA el mismo que VB.NET
- 22. Escribir desde R en plantilla en Excel conservando el formato
- 23. Control de fuente de módulos de código Excel VBA
- 24. ¿Cómo puedo URL codificar una cadena en Excel VBA?
- 25. Exportación de código VBA desde múltiples documentos de Excel para ponerlo en control de versión
- 26. VBA - Generar archivo de Excel desde Access (QueryTable)
- 27. Ponga el código de Excel-VBA en el módulo o la hoja?
- 28. ¿Cómo puedo enviar una solicitud HTTP POST a un servidor desde Excel usando VBA?
- 29. Barra de progreso en VBA Excel
- 30. ¿Cómo puedo capturar un error de depuración de Microsoft Access VBA desde mi código de C#?
Esto se debe principalmente a la ventana Inmediato es, en efecto, la "consola" para aplicaciones de VBA. –