Por que a Microsoft ainda envia VBA aos produtos do Office, em vez de integrar o .NET diretamente? [fechadas]

12

Sei que é possível chamar código .NET a partir do seu código VBA, mas por que o VBA continua a existir? A única razão pela qual consigo pensar é no legado.

Eu só tinha que classificar um Scripting.Dictionarye a quantidade de código necessária era assustadora.

O IDE se parece com o Visual Studio 2003. E há muitos pequenos detalhes que o deixam louco (como mudar de linha e receber um aviso devido a algum erro de compilação). Ou, se você abrir mais de uma planilha, ela se mistura com o "VBAProject" e isso é realmente confuso.

Toda a divisão módulo / módulo de classe / formulário não é tão ruim assim, mas acabo sempre escrevendo a lógica diretamente nos formulários ou tendo um módulo enorme que lida com tudo.

Por que não consigo pressionar Alt + F11 e invadir C #?

Kiril
fonte
11
"A única razão pela qual consigo pensar é no legado". E isso não é suficiente para você?
Euphoric
3
A Microsoft é o rei dos aplicativos legados e da compatibilidade com versões anteriores ... qualquer outra resposta seria surpreendente para mim, já que estamos falando da Microsoft.
2
@ Kiril É muito provável que não "sempre fizemos dessa maneira"; provavelmente é "comparamos quanto ganhamos ao quebrar a compatibilidade com versões anteriores versus o quanto perderemos e descobrimos que não vale a pena".
Doval
1
@ Kiril - sua pergunta pede para enviar o Office com .NET "em vez" do VBA. Isso exigiria abandoná-lo.
precisa saber é
3
@ Kiril: muitos personagens muito desonestos também ficariam muito felizes em incorporar dlls em documentos, mas não para seu benefício.
Whatsisname

Respostas:

15

O Microsoft Office possui várias maneiras de permitir que você altere / aprimore o comportamento padrão programaticamente. O VBA é uma linguagem testada, comprovada e amplamente difundida para scripts em documentos. Muitas pessoas do escritório conhecem o VBA e o usam, enquanto não conhecem linguagens de programação mais complexas, como o C #. O Office não seria vendido tanto se os clientes tivessem que reescrever muitos documentos antigos habilitados para macro que realizem coisas críticas aos negócios - depois de aprenderem um novo idioma ou qualquer outra coisa. A compatibilidade com versões anteriores é um recurso essencial!

Uma pilha .NET completa para o Office provavelmente requer algum conjunto de gerenciamento de dependências (dll: s, etc) e será muito difícil de gerenciar para tarefas simples - dificilmente é uma alternativa para scripts leves. O VSTO oferece a capacidade de usar o C #, mas ao preço de um ciclo de desenvolvimento de plugins mais pesado.

Um gerente de programa da Microsoft escreveu sobre isso aqui . Está claro que o VBA está e ainda estará disponível para pequenos fins de script.

Petter Nordlander
fonte
A explicação no artigo é muito boa. Obrigado.
Kiril
6
Como ex-funcionário, posso acrescentar que alguns clientes pagam muito dinheiro para ter Gates / Ballmer / Nadella etc. disponíveis na discagem rápida, bem como bate-papos regulares e que o VBA é considerado crítico o suficiente para que quaisquer alterações que quebrem o comportamento do VBA (especialmente no Excel e mesmo entre versões) chame a atenção EXCEPCIONALMENTE rapidamente. Também não é de forma alguma apenas para os não qualificados; existe um exército de desenvolvedores profissionais usando-o. O C # é bastante procurado com o VBA como conhecimento de trabalho.
James Snell
Esse argumento não impediu a MS de obsoleta VB6 anos atrás em favor da VB.Net, que quebrou muito código.
Mike Lowery
3

Bem, a resposta não é estritamente "legada". A resposta é que o VBA não é o VB6 ou o VB.Net: é o VBA. Um idioma separado, mas relacionado. Se substituído o VBA pelo VB.Net, inevitavelmente quebraria muitos DOCUMENTOS.

Substituir o VBA pelo VB.Net quase certamente resultaria em perda de dados para um número significativo de usuários de seus principais produtos - não é uma coisa boa.

E seu mercado alvo para o VBA não é programador.

jmoreno
fonte
7
O VBA é um primo muito próximo do VB6. As únicas diferenças materiais são aquelas relacionadas à API; ou seja, VBForms em vez dos modelos de objeto do Excel ou Word. Na ausência dessas diferenças, você pode copiar / colar o código VBA no VB6 (ou vice-versa) e ainda funcionará 99% do tempo.
Robert Harvey
3
O suporte para VBA e VB.Net/C# não precisa ser mutuamente exclusivo.
Joel Coehoorn
2

Se você considerar o principal motivo pelo qual as pessoas compram o Office é manter a compatibilidade com todos os documentos existentes, muitos dos quais com macros e VBA, seria uma Microsoft muito corajosa tratar esses usuários como eles fizeram com a multidão do VB6 e pedir para eles aproveite e comece a codificar no .NET, basta dar uma olhada na solicitação de uservoice nº 1 de todos os tempos !

Eu imagino que os caras do LibreOffice se animariam com a inconsciência!

O VBA é para produtividade no Office, não para "programação". O dia em que você precisa de mais energia dos seus documentos é o dia em que contrata um programador para reescrever tudo. Acho que outro motivo é por que as macros do Visual Studios também não são .NET - pense no objeto COM devenv4 como não muito diferente do VBA.

gbjbaanb
fonte
Ele não está pedindo para eles abandonarem o VBA. Ele está pedindo que eles tenham o .Net como uma opção adicional.
Joel Coehoorn
1

Eu acho que há uma ligeira, mas importante, diferença entre legado e popularidade . E quando você faz tantos contratos quanto eu, você aprende que o VBA é incrivelmente popular :) Não posso dizer quantos contratos eu fiz para "Excel jockeys" que não sabem nada sobre programação, mas pode esmagar o VBA como se fosse uma questão de vida ou morte.

Codificador desconhecido
fonte