Post Destacado

Configurando la Impresión Perfecta de un Libro de Excel

Aunque vivimos en una era digital, a veces todavía es necesario imprimir datos, tablas, gráficos, o información de cualquier tipo que hayamos procesado en Excel. Especialmente si estamos hablando de informes financieros, gráficos estadísticos, o simplemente porque preferiremos analizar la información en formato físico. Sin embargo, Excel es muy flexible y las hojas pueden volverse rápidamente muy extensas, lo que puede complicar las tareas de impresión. A continuación, detallaremos el proceso para configurar y preparar tu libro de Excel para imprimirlo de la mejor manera posible en cada caso. Paso 1: Revisión Preliminar Antes de imprimir, debes revisar cómo quedará el documento una vez impreso. Excel ofrece dos opciones para ello: a. Ve a la pestaña "Archivo", luego elige "Imprimir". Aquí puedes ver cómo se verá tu documento antes de imprimirlo. b.    Utiliza la opción 'Diseño de Página'. Esta perspectiva te dará una vista preliminar de cómo se verá tu libro

Early Binding & Late Binding en VBA


En un proyecto de automatización (más concretamente, al crear una macro que nos permite automatizar una tarea) existen ocasiones en las que es necesario que un software (por ejemplo, Excel) se comunique con y/o controle a otro (como Outlook, Word o PowerPoint) mediante el modelo de objetos componentes (COM) de Microsoft. Esta comunicación entre programas puede lograrse a través de dos estrategias principales.

El enlace anticipado y el enlace en tiempo de ejecución en tus macros de VBA tienen efectos concretos sobre el programa, desde el rendimiento, hasta la flexibilidad y el mantenimiento. Pero tal vez esos nombres te resulten algo extraños, y puede que los conozcas por sus nombres originales en inglés: early binding y late binding respectivamente. Cada uno de ellos presenta una serie de fortalezas que deberás sopesar en un proyecto a fines de poder aprovecharlas.

"Binding" o enlazar, implica poder utilizar referencias a objetos externos (otras aplicaciones) a fines de ejecutar código (funciones, propiedades) que están disponibles en los mismos, y lograr trasmitir información entre ellas. Esto es muy útil cuando desde la información disponible en Excel precisamos enviar correos electrónicos, crear presentaciones o documentos de texto.

La diferencia principal entre ellos, es que en late binding creamos primero la variable como un Objeto (genérico), y en early binding, como una instancia de la aplicación en concreto.

Early binding:

    Dim olApp As Outlook.Application

    Set olApp = New Outlook.Application

Late binding:

    Dim olApp As Object

    Set olApp = CreateObject("Outlook.Application")

A partir de ese punto, hemos creado dos objetos casi equivalentes (olApp), y el proceso subsiguiente casi no se diferencia. 

Early binding o enlace anticipado recibe este nombre porque desde un primer momento, VBA sabrá con qué aplicación estará tratando específicamente, permitiéndole desplegar una biblioteca de IntelliSense específica. Late binding o enlace en tiempo de ejecución se denomina de tal manera porque el objeto se terminará de enlazar durante la misma ejecución del código, en lugar de hacerlo anticipadamente.

Por lo general, la opción preferida es hacerlo por early binding, ya que es más eficiente en términos de rendimiento (la asignación es directa). Además, otra ventaja es que proporciona IntelliSense por parte de VBA, ya que desde el mismo código VBA identifica qué tipo de objeto está tratando, en lugar de ser uno "genérico".

Sin embargo, late binding puede ser útil para evitar problemas de compatibilidad cuando el código debe trabajar con diferentes versiones de los programas (por ejemplo, si en un ordenador coexisten diferentes versiones de Outlook), o si una macro debe ejecutarse en diferentes ordenadores.

Por lo tanto, si lo crítico en tu proyecto es el rendimiento (tanto para redactar el código como para ejecutarlo), te recomiendo considerar aplicar el enlace anticipado. Si por otro lado, debes priorizar la flexibilidad, debes considerar utilizar el enlace en tiempo de ejecución (late binding).