documentacion visual-studio excel-vba ms-office vsto vsta

visual-studio - documentacion excel



¿Utiliza VBA en las aplicaciones de Office 2007? (7)

¿Va a desaparecer VBA en el corto plazo, como lo hizo VB6? ¿No debería desarrollar nuevas aplicaciones de Office con VBA? ¿O debería desarrollar todas las nuevas aplicaciones de Office con VSTO?

Actualización: Recientemente leí este artículo .


Aquí hay un comentario de Microsoft sobre el futuro soporte de VBA. En pocas palabras, no va a desaparecer en las versiones de Windows de Office (pero se descontinúa para las versiones de Mac).


Microsoft ha declarado que se apoyará a VBA para avanzar en el futuro previsible, pero también están recomendando que las nuevas aplicaciones utilicen VSTO.

La última versión para Mac de MS Office no es compatible con VBA, y Windows de 64 bits la ejecuta en un modo virtual fuera de proceso de 32 bits. Entonces, si está planeando una nueva aplicación usando Office como plataforma, VSTO es definitivamente el camino a seguir, pero no debe preocuparse demasiado por el soporte heredado.

Como lo señala @cori, sería un gran marketing no-no para MS obtener soporte y romper tanto software existente.


Office VSTO ofrece una gran cantidad de funcionalidad adicional sobre Office VBA, y aunque no creo que Microsoft haya indicado que terminará VBA (de hecho, han dicho explícitamente que estará disponible al menos hasta Office 14; Office 2007 = Office 12), creo que vale la pena el esfuerzo de mover sus aplicaciones a VSTO para aprovechar la flexibilidad y potencia adicionales.

De hecho, no creo que la desaprobación de VBA sea factible, ya que una gran cantidad de programación de Office se lleva a cabo a nivel macro por parte de los usuarios comerciales y no creo que vaya a desaparecer en el corto plazo. Esas personas generalmente no tienen acceso a un IDE con capacidad VSTO.


VBA está muy lejos de ser depreciado, de hecho, VBA debe reintroducirse en la próxima versión de Office en MAC ( http://www.microsoft.com/presspass/press/2008/may08/05-13MacBU2008PR.mspx ) .

Para la mayoría de la gente en el terreno, VBA y C XLL (¡y VB6!) Continúan siendo las herramientas preferidas. Los enlaces .NET actuales son lentos y ofrecen cero ganancia de productividad. Las herramientas de la 3ª parte, como ExcelDNA, alivian un poco el problema, pero obviamente la base de código no administrada basada en C (y basada en el ensamblador) de Office no se sienta fácilmente con .NET.


VSTO tiene nuevas características, pero también tiene una serie de deficiencias importantes en comparación con VBA.

Por un lado, Code Access Security puede dificultar el despliegue de aplicaciones VSTO (eso es ser cortés).

Por otro lado, el entorno de desarrollo VSTO no está ni remotamente accesible para los desarrolladores de "usuarios avanzados" como VBA. Por ejemplo, no hay una grabadora de macros para que comiences.

Y un gran inconveniente es que la interoperabilidad .NET con objetos COM fuera de proceso no funciona bien. Por ejemplo, si desea manipular otras aplicaciones de Office (Word, PowerPoint, Outlook) desde una aplicación Excel VSTO, encontrará varias copias de estas aplicaciones ejecutándose en segundo plano, por las razones descritas en este artículo de KB .

Todo esto, junto con la gran inversión en aplicaciones VBA existentes, significa que VBA no desaparecerá en el corto plazo.


Los complementos de VBA son un poco problemáticos de implementar, pero VSTO lo es aún más. Además, VSTO implica un poco de sobrecarga, ya que necesita iniciar el CLR antes de ejecutar su código.

Pero lo más importante de todo; VSTO le quita el dolor de escribir VBA.


Microsoft ha estado dejando caer pistas sobre una versión de código administrado de Office con un VSTO integrado (presumiblemente de la misma manera que el VB6 IDE está integrado para VBA, por lo que el VS IDE se integrará para VSTO) desde que se lanzó .NET por primera vez.

Dada la cantidad de codificación involucrada, y dado que esto no produciría ninguna característica que sea visible para los usuarios, dudo mucho que esto esté en la lista de prioridad de Microsoft. Me imagino que colocan un conjunto de objetos de código administrado sobre la base de código existente (como Joel Spolsky superó un conjunto de objetos COM sobre la base de código C existente al poner VBA en Excel en primer lugar) y conectaron un nuevo IDE como predeterminado, mientras se oculta el anterior. Incluso eso sería un ejercicio importante (¡imagina escribir el grabador de macros!). Por supuesto, esto haría de .NET un requisito previo para Office, que el equipo de Office solo aceptará a punta de pistola.

En realidad, nunca eliminarán VBA de los productos, por supuesto: Excel todavía admite macros de Excel 4, y Word todavía tiene el objeto de automatización de WordBasic para admitir macros de Word 6, y no hay indicios de que ninguno de ellos se elimine, ya que hay demasiado código heredado para ser compatible, y nadie ha utilizado ninguno de esos modelos de codificación en una década.

Si Microsoft alguna vez pone un entorno .NET en Office (que, francamente, dudo que alguna vez ocurra), entonces podrían dejar de agregar compatibilidad con VBA para las nuevas características de Office. Eso es lo más cerca que van a llegar a descontinuar VBA.