Sé que es posible llamar al código .NET desde su código VBA, pero ¿por qué sigue existiendo VBA? La única razón por la que puedo pensar es el legado.
Solo tenía que clasificar Scripting.Dictionary
y la cantidad de código necesaria era aterradora.
El IDE se parece a Visual Studio 2003. Y hay muchos pequeños detalles que te vuelven loco (como cambiar la línea y recibir una advertencia por algún error de compilación). O, si abre más de una hoja de cálculo, se mezcla con usted "VBAProject" y esto es realmente confuso.
Toda la división módulo / clase módulo / formulario en realidad no es tan mala, pero siempre termino escribiendo directamente lógica en formularios, o teniendo un gran módulo que maneja todo.
¿Por qué no puedo presionar Alt + F11 y piratear C #?
Respuestas:
Microsoft Office tiene varias formas de permitirle cambiar / mejorar el comportamiento predeterminado mediante programación. VBA es un lenguaje probado en batalla, ampliamente probado y ampliamente difundido para scripts en documentos. Muchas personas de oficina conocen VBA y lo usan, mientras que no conocen lenguajes de programación más complejos como C #. Office no se vendería tanto si los clientes tuvieran que reescribir montones de documentos antiguos habilitados para macros que hacen cosas críticas para el negocio, después de aprender un nuevo idioma o lo que sea. ¡La compatibilidad con versiones anteriores es una característica clave!
Es probable que una pila completa de .NET para Office requiera algún conjunto de administración de dependencias (dll: s, etc.) y será muy difícil de administrar para tareas simples; no es una alternativa para las secuencias de comandos livianas. VSTO le brinda la capacidad de ir con C #, pero al precio de un ciclo de desarrollo de complementos más pesado.
Un gerente de programa en Microsoft ha escrito sobre esto aquí . Está claro que VBA es y seguirá existiendo para pequeños propósitos de script.
fuente
Bueno, la respuesta no es estrictamente "legado". La respuesta es que VBA no es ni VB6 ni VB.Net: es VBA. Un lenguaje separado, pero relacionado. Si se reemplaza VBA con VB.Net, inevitablemente rompería muchos DOCUMENTOS.
Reemplazar VBA con VB.Net casi con certeza provocaría la pérdida de datos para un número significativo de usuarios de sus productos principales, lo que no es bueno.
Y su mercado objetivo para VBA no son los programadores.
fuente
Si considera que la razón principal por la que las personas compran Office es para mantener la compatibilidad con todos los documentos existentes, muchos de los cuales tienen macros y VBA, sería un Microsoft muy valiente tratar a esos usuarios como lo hicieron con la multitud de VB6 y decirles que succione y comience a codificar en .NET, ¡solo eche un vistazo a la solicitud de voz de usuario número 1 !
Sin embargo, ¡me imagino que los chicos de LibreOffice se animarían a perder el conocimiento!
VBA es para productividad en Office, no para "programación". El día que necesita más potencia de sus documentos es el día en que contrata a un programador para reescribir todo. Supongo que otra razón es por qué las macros de Visual Studios tampoco son .NET: piense en el objeto COM devenv4 como no muy diferente a VBA.
fuente
Creo que hay una ligera, pero importante, diferencia entre legado y popularidad . Y cuando has hecho tantos contratos como yo, te das cuenta de que VBA es increíblemente popular :) No puedo decirte cuántos contratos he hecho para "Excel jockeys" que no saben nada sobre programación pero puede aplastar a VBA como si fuera una cuestión de vida o muerte.
fuente