¿Por qué Microsoft todavía envía VBA dentro de los productos de Office, en lugar de integrar .NET directamente? [cerrado]

12

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.Dictionaryy 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 #?

Kiril
fuente
11
"La única razón por la que puedo pensar es en el legado". ¿Y eso no es suficiente para ti?
Eufórico el
3
Microsoft es el rey de las aplicaciones heredadas y la compatibilidad con versiones anteriores ... cualquier otra respuesta me sorprendería dado que estamos hablando de Microsoft.
2
@ Kiril Probablemente no sea "siempre lo hicimos así"; Probablemente sea "hemos comparado cuánto ganamos al romper la compatibilidad con versiones anteriores frente a cuánto perderemos, y descubrimos que no vale la pena".
Doval
1
@Kiril: su pregunta solicita enviar Office con .NET "en lugar" de VBA. Eso requeriría abandonarlo.
JeffO
3
@ Kiril: muchos personajes muy dudosos también estarían muy felices de incrustar archivos dlls en los documentos, pero no para su beneficio.
cuál es el

Respuestas:

15

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.

Petter Nordlander
fuente
La explicación en el artículo es muy buena. Gracias.
Kiril
66
Como ex miembro del personal, puedo agregar que algunos clientes pagan mucho dinero para tener Gates / Ballmer / Nadella, etc. disponible en Marcación rápida, así como en chats regulares y que VBA se considera lo suficientemente crítico como para que cualquier cambio que rompa el comportamiento de VBA (especialmente en Excel e incluso entre versiones) llaman la atención EXCEPCIONALMENTE rápido. Además, de ninguna manera es solo para los no calificados; Hay un ejército de desarrolladores profesionales que lo utilizan. C # se busca con bastante frecuencia con VBA como conocimiento práctico.
James Snell
Este argumento no impidió que MS obsolease VB6 hace años a favor de VB.Net que rompió mucho código.
Mike Lowery
3

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.

jmoreno
fuente
77
VBA es un primo muy cercano de VB6. Las únicas diferencias materiales son las que tienen que ver con la API; es decir, VBForms en lugar de los modelos de objetos Excel o Word. En ausencia de esas diferencias, puede copiar / pegar el código VBA en VB6 (o viceversa), y seguirá funcionando el 99 por ciento de las veces.
Robert Harvey
3
La compatibilidad con VBA y VB.Net/C# no tiene que ser mutuamente excluyente.
Joel Coehoorn
2

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.

gbjbaanb
fuente
No les está pidiendo que abandonen VBA. Les está pidiendo que tengan .Net como una opción adicional.
Joel Coehoorn
1

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.

Codificador desconocido
fuente