Aplicações Visual Basic 6, migradas para a web
Em muitas empresas, programas em Visual Basic 6 continuam a gerir encomendas, produção, marcações e contas, mais de vinte e cinco anos depois da última versão. Migramo-los para aplicações web escritas em C#, mantendo os dados e as regras de negócio, com ou sem o código-fonte original.
Porquê agora
A Microsoft deixou de suportar o ambiente de desenvolvimento Visual Basic 6 a 08/04/2008. O runtime continua incluído no Windows e é suportado durante a vida das versões do Windows que o incluem, entre elas o Windows 11, mas apenas como componente de 32 bits e apenas para regressões graves e problemas de segurança críticos. Os controlos que não fazem parte do Windows, como MSCOMCTL.OCX, MSFLXGRD.OCX e quase todos os OCX de terceiros, têm de ser instalados com a aplicação e não são cobertos pela Microsoft.
Na prática, a dificuldade está nas pessoas e nas ferramentas. A Microsoft não suporta o IDE no Windows de 64 bits, há cada ano menos programadores que conhecem VB6, e cada computador substituído é mais uma instalação com componentes registados à mão.
- Ambiente de desenvolvimento Visual Basic 6Fim do suporte da Microsoft
- Windows 10Fim do suporte da Microsoft
O que migramos
O programa inteiro, incluindo aquilo de que depende fora do seu próprio código.
Formulários e controlos
Janelas com caixas de texto, caixas de combinação, grelhas, separadores e matrizes de controlos, incluindo MSFlexGrid, ListView e TreeView. Passam a páginas web que mantêm a disposição a que as pessoas estão habituadas.
Lógica em módulos e classes
Cálculos, validações e procedimentos espalhados por ficheiros .bas e .cls e por eventos dos formulários. Passamo-los para serviços no servidor cobertos por testes.
Acesso a dados
Código DAO, RDO e ADO que trabalha com Access, SQL Server, Oracle ou outras bases de dados, incluindo SQL construído juntando texto. Os dados passam para SQL Server ou MySQL, ou ficam onde estão quando outros sistemas dependem deles.
Relatórios e impressão
Crystal Reports, DataReport e impressões desenhadas linha a linha com o objeto
Printer. Cada uma passa a um documento PDF com o mesmo conteúdo.Componentes COM e DLL
DLL ActiveX desenvolvidas internamente, componentes de terceiros e chamadas à API do Windows feitas com
Declare. Identificamos cada uma e decidimos se é substituída, reescrita ou se já não é necessária.Ficheiros, definições e equipamentos
Configuração em ficheiros INI ou no registo, importações de ficheiros de texto e ligações a balanças, impressoras de etiquetas ou equipamentos série através do MSComm. Verificamos quais destes ainda precisam de algo instalado localmente.
Como fica a versão web
- Painel
- Calendário
- Pacientes
- Tratamentos
- Relatórios
| Hora | Dr Valdrin | Dr Sato | Higienista |
|---|---|---|---|
| 08:30 | L. Moreau - Consulta | A. Bianchi - Destartarização | |
| 09:00 | K. Novak - Restauração | ||
| 09:30 | S. Haddad - Coroa | J. Lindqvist - Destartarização | |
| 10:00 | P. Ortega - Desvitalização | ||
| 10:30 | E. Kowalski - Consulta | ||
| 11:00 | N. Ferri - Extração | R. Dimitrov - Destartarização | |
| 11:30 | T. Brennan - Restauração | ||
| 12:00 | C. Duval - Consulta | H. Ito - Destartarização |
Uma agenda de marcações como poderia ser num programa VB6 no computador da receção, e a mesma semana no browser.
Arraste o manípulo ou use as setas do teclado.
Para onde vai cada parte
- Em VB6: Formulários (.frm) e respetivos eventos
- Na aplicação web: Páginas web, com a lógica no servidor
- Em VB6: Módulos (.bas) e classes (.cls)
- Na aplicação web: Serviços em C# cobertos por testes automáticos
- Em VB6: Controlos OCX registados em cada computador
- Na aplicação web: Componentes web normais, sem nada para instalar
- Em VB6: Recordsets ADO ou DAO
- Na aplicação web: Consultas parametrizadas sobre SQL Server ou MySQL
- Em VB6: Crystal Reports ou DataReport
- Na aplicação web: Documentos PDF gerados pelo servidor
- Em VB6: Um pacote de instalação para cada posto
- Na aplicação web: Um único endereço, aberto no browser
Como decorre a migração
Análise em 48 horas
Envia-nos o programa instalado e a respetiva base de dados, mais o código-fonte (.vbp, .frm, .bas, .cls) se o tiver. Em 48 horas respondemos com um relatório escrito: o que o programa faz hoje, onde estão os riscos, como se organizaria a versão web, um preço fixo para um módulo-piloto e uma estimativa para o resto. É gratuito e não o compromete a nada.
Módulo-piloto
Construímos uma parte da aplicação sobre uma cópia dos seus dados reais, normalmente a parte mais usada. Os seus colaboradores trabalham com ela no dia a dia antes de decidir o resto.
Os mesmos dados, os mesmos resultados
Registamos o que o programa VB6 produz para um conjunto de casos reais, como preços, totais e documentos gerados, e verificamos a nova aplicação face a esses resultados. Cada regra de negócio que encontramos passa também a um teste automático, repetido antes de cada nova versão. Recebe um relatório com o resultado de cada verificação.
30 dias em paralelo
Quando a aplicação completa estiver pronta, o programa VB6 continua em uso ao lado dela durante 30 dias. Qualquer diferença aparece enquanto o programa antigo ainda lá está, e corrigimo-la dentro do preço acordado.
Armadilhas típicas, e como as tratamos
Dependências OCX e ActiveX
Muitos programas VB6 dependem de controlos que não vêm com o Windows, alguns de fornecedores que já não existem, e a Microsoft classifica ficheiros como
GRID32.OCXeTHREED32.OCXcomo não suportados. A análise lista cada dependência, o que faz no programa e o que a substitui.Variant, propriedades predefinidas e conversões silenciosas
O VB6 converte sem avisar entre texto, números e datas, e uma linha como
Text1 = rs!Totaldepende de propriedades predefinidas. Uma tradução literal para C# ou VB.NET comporta-se de outra forma nos casos-limite, por exemplo com campos vazios ou datas noutro formato regional. Reescrevemos estes pontos de forma deliberada e cobrimo-los com testes.On Error Resume NextFrequente no código VB6, esconde as falhas e deixa o programa continuar com dados gravados pela metade. Onde o encontramos, apuramos o que o autor queria evitar e tratamos esse caso explicitamente. Caso contrário, a nova aplicação ou pararia com um erro ou repetiria os mesmos erros silenciosos.
Integerde 16 bits e arredondamentosUm
Integerem VB6 vai só até 32 767, o que está na origem de muitos erros de overflow quando uma tabela cresce. OCurrencyguarda quatro casas decimais e oRoundusa o arredondamento bancário. Reproduzimos o arredondamento que o negócio espera e assinalamos onde o programa antigo errava.SQL construído juntando texto
As consultas montadas com
&a partir do que o utilizador escreveu ficam expostas a SQL injection e falham com nomes que tenham apóstrofo. Na nova aplicação, todas as consultas usam parâmetros.Código-fonte em falta ou desatualizado
Por vezes o código-fonte perdeu-se, ou a cópia guardada não corresponde ao programa em uso. Um programa VB6 compilado não pode ser convertido de volta em código-fonte fiável, por isso partimos do programa em funcionamento, da base de dados e dos ecrãs, e a análise indica que partes têm maior incerteza.
Preço e pagamento
Análise
Gratuita
por escrito, em 48 horas
Módulo-piloto
1000–1500 €
normalmente; 50% no início, 50% na aceitação
Condições de pagamento
Pedimos 50% no arranque e 50% na aceitação. A segunda metade é paga antes da entrada em produção e da entrega do código-fonte. Nos projetos maiores, os pagamentos acompanham as fases acordadas.
A análise é gratuita. Se decidir não avançar, fica com o relatório e não deve nada.
Os preços são fixos e acordados por escrito antes de começarmos. Se o trabalho mudar, enviamos um novo orçamento escrito e só avançamos com a sua aprovação.
Numa migração completa, o nosso objetivo é ficar 40 a 60% abaixo do orçamento habitual de uma agência. É possível porque somos um estúdio pequeno, sem escritórios para pagar nem equipa comercial.
Preços sem IVA.
Uma migração real, verificada por testes
A Northwind é a base de dados de exemplo que a Microsoft distribuía com o Access, não um cliente nosso. Migrámos uma cópia pública para SQLite e PostgreSQL, comparámos cada tabela e cada consulta com o original através de testes automáticos e construímos sobre o resultado uma aplicação web funcional. O caso de estudo apresenta os números, e o relatório de equivalência enumera cada verificação.
A Northwind é uma base de dados Access, mas para Visual Basic 6 seguimos o mesmo método: migrar, comparar os resultados com os do original sobre os mesmos dados e manter os dois programas em paralelo.
Relatório de equivalência (em inglês) · Pré-visualização clicável e análise de exemplo (demonstração)

Perguntas frequentes
Não temos o código-fonte. Conseguem migrar o programa na mesma?
Muitas vezes, sim. Partimos do programa em uso, da base de dados e de capturas de ecrã ou gravações da forma como as pessoas o usam. A análise indica que partes conseguimos reproduzir com segurança e quais precisam de informação sua.
Porque não converter o código automaticamente para VB.NET ou C#?
As ferramentas de conversão produzem código que compila, mas que mantém a estrutura de secretária, depende muitas vezes de bibliotecas de compatibilidade e arrasta os problemas antigos. Para uma aplicação web reconstruímos os ecrãs e migramos a lógica, usando o código VB6 como especificação do que o programa faz.
O nosso programa VB6 vai deixar de funcionar no Windows 11?
Por si só, não: a Microsoft suporta o runtime do VB6 no Windows 11. O que costuma falhar é tudo o que está à volta, como ficheiros OCX não registados, pacotes de instalação perdidos, drivers de bases de dados antigos e o IDE, que a Microsoft não suporta no Windows de 64 bits.
O nosso programa comunica com uma balança ou uma impressora de etiquetas. Uma aplicação web consegue fazer isso?
Normalmente, sim, mas é a única parte que pode exigir um pequeno programa instalado no computador ligado ao equipamento. Verificamos isto durante a análise e incluímo-lo no preço.
Podemos migrar uma parte de cada vez?
Sim. O módulo-piloto é a primeira parte, e o resto pode seguir por fases. Sempre que possível, o programa VB6 e a aplicação web partilham a mesma base de dados durante a transição.
Em que linguagem será escrita a nova aplicação?
Normalmente em C# com ASP.NET Core, que qualquer programador .NET consegue manter. PHP com MySQL é uma opção, se for com isso que o seu fornecedor de informática trabalha.
Outros serviços
Todos os serviços- Modernização de software antigoAccess, Excel VBA, VB6, Delphi e .NET antigo, reconstruídos para a web
- De Microsoft Access para aplicação webTabelas, consultas, formulários, relatórios e VBA passados para uma aplicação web sobre SQL Server ou MySQL.
- Excel VBA para aplicação webLivros com macros, UserForms e folhas ligadas transformados numa aplicação web multiutilizador.
- Migração de aplicações DelphiProgramas Delphi sobre BDE, Paradox ou dBase passados para uma aplicação web sobre uma base de dados SQL.
- Modernização de .NET antigoAplicações WinForms e ASP.NET Web Forms migradas para ASP.NET Core, mantendo o que ainda funciona.
Contacto
Escolha o canal que mais lhe convier. Respondemos por e‑mail, em português, no prazo de um dia útil.
Por e‑mail
riccardo@Envie-nos o programa e a respetiva base de dados, com dados de teste se preferir, ou uma breve descrição do que faz. Respondemos no prazo de um dia útil.
Envie-nos o seu ficheiro
Se o programa for em Access, Excel, VB6, Delphi ou numa versão antiga de .NET, recebe uma análise escrita gratuita no prazo de 48 horas após o envio do ficheiro.
- Faça uma cópia do ficheiro, se preferir com dados de teste.
- Anexe-a ao formulário ou a um e‑mail, de preferência num arquivo protegido por palavra-passe, enviando a palavra-passe à parte. Se o pedir, assinamos antes um acordo de confidencialidade.
- Em 48 horas: a análise e um preço fixo para um módulo piloto.
Trabalhamos a partir de Itália.