Post Destacado

¿Buscas trabajo y no has certificado en Excel? 馃

Hoy quiero hablarte sobre un tema que puede cambiar tu vida profesional: la certificaci贸n oficial de Excel MO-200. Puede que te est茅s preguntando, ¿por qu茅 deber铆a importarme obtener esta certificaci贸n? Pues, sigue leyendo y descubrir谩s las ventajas que puede ofrecerte. ¿Qu茅 es la Certificaci贸n MO-200? La certificaci贸n MO-200, tambi茅n conocida como "Microsoft Office Specialist: Excel Associate (Excel and Excel 2019)", es una credencial oficial otorgada por Microsoft . Este examen valida tus habilidades en Excel, asegurando que eres capaz de manejar eficientemente una amplia gama de tareas dentro de esta poderosa herramienta. B谩sicamente, todo el mundo agrega en sus CV la frase " Dominio de Excel ", pero casi nadie se preocupa por demostrarlo oficialmente. Esta es tu oportunidad para ser el candidato preferido en tu pr贸xima b煤squeda. ¿Por Qu茅 Deber铆as Considerarla? 1. Mejora tu Curr铆culum:    Tener una certificaci贸n oficial en tu curr铆culum te diferencia de otros can

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).