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.Dictionary
e 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 #?
Respostas:
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.
fonte
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.
fonte
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.
fonte
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.
fonte