Tenemos un montón de informes que se generan a través de VBA & Excel. Solo un pequeño porcentaje de los informes son cálculos reales: la mayoría del trabajo son llamadas sql y formateo/escritura de celdas. El más largo de los cuales toma varias horas, la mayoría toma alrededor de 20-30 minutos cada uno.Libre perfil VB6/VBA y mejores prácticas de Excel
El código de VBA/Excel se conecta a un dll que utilizan las aplicaciones de escritorio VB6, es aquí donde se realizan todas las llamadas sql. Aunque estoy seguro de que hay margen de mejora aquí, no es esto lo que me preocupa: las aplicaciones de escritorio son bastante rápidas.
Dos funciones VBA se utilizan en abundancia: se llaman GetRange y SetupCell y casi siempre aparecen juntas. La función GetRange es un contenedor para el objeto Excel.Range. Toma una hoja y 4 valores para las extensiones del rango. Su uso principal es elegir la celda para editar. No parece haber muchas posibilidades de optmizarlo, pero ¿es la mejor manera?
Su socio es SetupCell. Esto toma un objeto Excel.Range, texto y una docena de parámetros sobre la celda (fuente, bordes, etc.). La mayoría de estos parámetros son booleanos opcionales pero, una vez más, parece un desperdicio. Algunos de estos pueden configurarse póstumamente, pero algunos dependen de los valores contenidos en la celda.
Hay un montón de código en estas funciones, principalmente si las declaraciones y el trabajo no me agradecerán que lo publique.
supongo Tengo dos preguntas: ¿Existe una mejor manera y para qué sirve y es que hay perfilador libre que puedo usar para ver si la mayor parte del tiempo está aquí o en el DLL?
No es tan fácil. Los informes deben ser de diferentes longitudes, algunas de las celdas deben colorearse según el valor de las celdas (o la suma de las celdas). –
SSRS podrá hacer frente a casi todo lo que le arroje; en segundo lugar esta respuesta. –