Pular para o conteúdo principal

O guia definitivo de instalação e operação do Visual Basic 6 nos Windows 10 e 8.X (e solução de problemas)

Tenho que admitir: fazia tempo que estava devendo aos meus leitores da turma do VB6 um guia atualizado sobre a instalação e operação da icônica linguagem nas versões mais recentes do Windows. Este presente tutorial é uma atualização dos anteriores e cobre a versão final do Windows 10, bem como os erros mais comuns que ocorrem ao carregar projetos nestas versões do Windows.


A instalação

O processo de instalação é praticamente idêntico ao que demonstrei em uma das compilações de testes do Windows 10, porém vocês perceberão que o Windows 10 final não exibe qualquer mensagem de alerta de incompatibilidade para o instalador do Visual Studio 6, muito bom! De qualquer modo, irei recapitular aqui os principais tópicos sobre o processo de instalação.

O primeiro passo é evitar a instalação do zumbi MS-Java. Para tanto, acesse a pasta de instalação do Visual Studio 6 e renomeie o diretório IE4 para qualquer nome de sua preferência. Um detalhe: caso os arquivos de instalação estejam em uma mídia óptica os mesmos deverão ser copiados para o disco rígido para que este procedimento seja feito, por motivos óbvios.

Gostaram do nome que eu coloquei? :p

Agora podemos iniciar a instalação. Na tela de opções selecione Custom.


Na tela de seleção de componentes deixe marcado apenas os itens Visual Basic 6 e ActiveX.


O processo deverá ser concluído com sucesso.


A instalação da coleção MSDN é opcional.


Porém recomendo não efetuar a instalação do InstallShield...


... e dos componentes para servidores.


Desmarque a opção de registro e finalize a instalação. Após isto recomendo fortemente instalar o Service Pack 6 e reiniciar o PC.


Configurações adicionais

Faltam agora apenas pequenos ajustes para uma operação plena do Visual Basic 6. No menu Iniciar (ou tela Iniciar do caso do Windows 8.X), clique com o botão direito no ícone do VB6 e escolha a opção abrir local do arquivo.


Acesse as propriedades do item Microsoft Visual Basic 6.0 e selecione a guia compatibilidade. Na tela exibida ajuste o modo de compatibilidade para o Windows XP e marque a opção de executar como administrador.


O VB6 deverá estar positivo e operante agora! :)

Os erros mais comuns ao carregar projetos

Com certeza os erros mais comuns ao se abrir projetos no VB6 instalado no Windows 10 ou 8.X (no 7 e Vista isto também pode ocorrer) estão relacionados a falhas no carregamento de referências ou componentes do projeto. Como teste abri um projeto que desenvolvi há muitos anos atrás no Windows XP e de cara as seguintes mensagens de erro foram exibidas:



Como podemos observar pela mensagem, o erro diz respeito a um ocx não carregado. Olhando o log gerado temos uma boa pista do problema:


Revisando as referências e componentes

Como estes erros ocorrem devido a alguma referência ou componente não carregado, é necessário efetuar uma revisão de ambos para o diagnóstico. Verifique primeiro as referências do projeto (menu Project – References) e verifique se algum deles está faltando (com a palavra MISSING). No exemplo as referências estavam perfeitas:


Assim sendo, com certeza trata-se de um componente não carregado, no caso o MSCOMCTL.OCX conforme a mensagem de erro. Antes de sair caçando este arquivo por aí, vale apena fazer uma pesquisa para ver se o mesmo já não se encontra presente no Windows e apenas não esteja sendo carregado pelo VB6. No caso, ele já estava presente:


Caso o componente não estivesse presente, seria necessário obter o mesmo de alguma outra instalação do VB6, copiá-lo para a pasta C:\Windows\SysWOW64 e registrá-lo manualmente com o comando regsvr32, que no exemplo ficaria:

C:\>REGSVR32 C:\WINDOWS\SYSWOW64\MSCOMCTL.OCX

Apenas lembrando que o comando deve ser executado no prompt como administrador.

Carregando componentes e referências manualmente

Uma vez que o arquivo do componente (ou referência) já esteja devidamente registrado, resta somente carrega-lo no VB6. Para tanto abra a lista de componentes ou referências (ambos encontram-se no menu Project) e clique no botão browse:


Navegue até a pasta C:\Windows\SysWOW64 e selecione o arquivo do componente/referência a ser carregado.


O componente ou referência deverá ser carregado e o projeto funcionará normalmente. Se necessário repita os procedimentos caso mais de um componente e/ou referência não tenha sido carregado.


É isto aí, agora nada mais deverá impedir a correta utilização do VB6 nas últimas versões do Windows!

Veja também:

Comentários

  1. Amigo, funcionou beleza a receita, no entanto o service pack 6 não instala de forma alguma! Essa é a mensagem de erro: Setup Error 544 - Setup is unable to open the data file 'D:\Service Pack6\acmsetup.stf'; run setup again from where you originally ran it. Alguma sugestão?

    ResponderExcluir
    Respostas
    1. Pior que nunca tive problemas para instalar o SP6... em outras versões do Windows ele instala beleza? Você pode também tentar instalá-lo como administrador e em modo de compatibilidade com o Windows XP.

      Excluir
  2. Michael Rigo, agora instalado e funcionando! Mas nem tudo é perfeito! O que descobri é que os sistemas que uso o listview quando estou executando-os dentro do vb, ao se clicar no listview o vb é abortado completamente, sendo necessário carrega-lo novamente! Agora se carrego um projeto novo e uso o listview nada acontece! O que não pode ser são os controles que vem com Microsoft Windows Common Controls 5.0 (sp2 comctl32.ocx) Microsoft Windows Common Controls 6.0 (sp6 MsComctl.Ocx) pois testei separado e conjuntamente e um projeto novo nada acontece! E aí, alguma sugestão!?

    ResponderExcluir
    Respostas
    1. Vixe amigo, só testando para poder sugerir algo... vou buscar algum projeto meu que use o ListView e ver o que acontece ao abrir e executar o mesmo no Windows 10.

      Excluir
    2. Testei com um projeto que faz uso intensivo da ListView e o mesmo funcionou (compilou e rodou) realizando o procedimento mostrado na postagem, ou seja, carregando o MSCOMCTL.OCX manualmente no VB6.

      Excluir
  3. É, e a coisa vai complicando um pouquinho mais, quando se usa ENTER ao invés de TAB quando executando dentro do ambiente, tenho a seguinte resposta: Run-time error 70: Permission denied HEHEHEHE tá difícil ver o "bichim" funcionando redondo!!!!

    ResponderExcluir
  4. Em tempo!!! Solução para o Sendkeys!!! Em um módulo qualquer crie esta sub e problema resolvido!!!
    Public Sub Sendkeys(text$, Optional wait As Boolean = False)
    Dim WshShell As Object
    Set WshShell = CreateObject("wscript.shell")
    WshShell.Sendkeys text, wait
    Set WshShell = Nothing
    End Sub

    ResponderExcluir
    Respostas
    1. Muito obrigado amigo pela ótima contribuição! :)

      Excluir
    2. Muito obrigado por compartilhar esta solução do SendKeys!
      Acabei esbarrando com esse problema porque tenho uns componentes que simulam teclados virtuais para telas touch screen. E portanto, uso SendKeys em milhares de chamadas.
      Parabéns e sucesso para você!

      Excluir
  5. Obrigado, a instalação funcionou 100%, inclusive o SP6.

    ResponderExcluir
  6. Olá amigo.

    No meu caso, mesmo registrando a ocx, não consigo marcar a referência do componente. O erro é " could not be loaded. É só o pacote SP6 que dá isso.

    ResponderExcluir
    Respostas
    1. Resolvido: como ponto adicional para a matéria, tem que desmarcar a opção "Upgrade ActiveX Controls", nas propriedades do projeto

      Excluir
    2. Muito obrigado pela preciosa contribuição. Abraço!

      Excluir
  7. Ótimas dicas amigo. Consegui instalar o VB6 mas ao instalar o SP6 o Windows 10 informa que não pode instalar porque a língua do VB6 é diferente do sistema operacional. Alguma sugestão? Tenho projetos com XML, e não executa sem o SP6, preciso das DLL.

    ResponderExcluir
    Respostas
    1. O seu Windows 10 é em português? Neste caso eu teria que realizar uma simulação para ver o que pode ser feito...

      Excluir
  8. Se eu gerar um executável no Win10, será que esse executável roda normal em XP, 7 e 8 ?
    É que quando gero um executável no win8, ele não roda no XP.

    ResponderExcluir
    Respostas
    1. Para rodar no XP tem que compilar no XP, tanto que tenho sempre à mão uma VM com o XP + VB6 para estes casos.
      Já o Windows 7/8/10 são intercambiáveis até onde pude testar, desde que sejam da mesma arquitetura (x86 ou x64). Compilei sistemas no Windows 7 (x64) e os mesmos rodaram sem problemas no 8.1 e no 10, todos x64.

      Excluir
    2. Quando compilo pelo Windows 7 Pro x86 e/ou x64. Roda perfeitamente no XP, Vista, 7, 8.1 e 10 (Tanto em x86 quanto em x64).
      Ainda farei meus testes de debug e compilações no Win 10 Pro x64 para ver como se comportará em todos os outros sistemas operacionais do XP para cima.
      Se funcionar, irei deletar minha VM win7 e passarei utilizar apenas o Win10.

      Excluir
  9. Tentei instalar no windows 10 e vai até o ponto onde diz que está atualizando o sistema (minha versão vb6 enterprise versão 8176 retail 6.0.8169 ingles) aí trava e fica a ampulheta na tela.

    ResponderExcluir
    Respostas
    1. O componente Data Access está marcado para instalação? Este componente é particularmente problemático com o Windows 10 e o 8.X.

      Excluir
  10. Olá amigo, ótimo tutorial, mas estou com um probleminha que não consigo driblar. Após todos os processos de instalação citados, o projeto abre sem apresenta erro algum, porém, na hora de rodar apresenta o erro: Can't find project or library na declaração de uma variável do tipo Button (Public btmx as Button). Já refiz todo processo umas 3 vezes e sempre ocorre o mesmo problema, tem alguma dica p ajudar. Grande Abraço.

    ResponderExcluir
    Respostas
    1. Pior que não, em nenhum dos meus projetos tive esse problema. Checou se não tem nenhuma referência faltando?

      Excluir
    2. Pois é Michael, era isso mesmo... eu uso um componente de terceiro e nos testes não os registrei. Não identifiquei de pronto pq o erro causado não tem nada a ver com o componente faltante, foi registrar o danado e tudo correu muito bem. Muito obrigado.

      Excluir
  11. Primeiramente parabéns pelo excelente trabalho que esta fazendo. Eu estou tendo o seguinte problema no Windows 10. Eu registro uma dll da minha aplicação e meu sistema consegue instanciar. Na segunda vez ele diz que não consegue carregar, porém a dll esta devidamente registrada. O ero é o seguinte: Data e hora: 31/08/2016 15:17:27 Erro: 429 ActiveX component can't create object - Local do erro: NSVet\ NSVP_A_MenuVet\ modPrincipal\ Main\ Ponto: 1

    ResponderExcluir
    Respostas
    1. Se executar a aplicação como administrador (mesmo se o seu usuário tiver todas as permissões) ocorre o erro? Tente clicar com o botão direito e escolha "Executar como administrador". Geralmente este erro de "ActiveX component can't create object" está relacionado com permissões.

      Excluir
  12. Michael, muito obrigado pelo guia, realmente a instalação ocorre sem problemas, inclusive com o SP6. Mas estou tendo um problema: quando tento executar minha aplicação direto dentro do VB6 em modo depuração, a aplicação nao consegue estabelecer conexao com minha base de dados Oracle 10g. Estou usando o ADODB para me conectar na base, será que a remoção dos componentes ADO e OLEDB do Oracle durante a instalação prejudicam esta conexão? Tem alguma idéia do porque de isto estar acontecendo? O mais estranho é que eu tenho uma versao ja compilada do meu aplicativo rodando nesta mesma maquina, e ela consegue se conectar normalmente na base. Assim, acredito que seja algum problema na instalação do VB mesmo que esta me impedindo de conectar via modo de depuração...HELP!!

    Esta é minha string de conexão que sempre funcionou até antes de eu instalar o VB6 no Windows 10:

    Set DBConn = New ADODB.Connection

    With DBConn
    .Provider = "OraOLEDB.Oracle"
    .Properties("Data Source") = "192.168.0.90:1521/XE"
    .Properties("User Id") = "dbvagas"
    .Properties("Password") = "knight"
    End With

    DBConn.Open

    Ao tentar abrir na linha final ele está dando o erro: ORA-06413: Conexao não Aberta.

    ResponderExcluir
    Respostas
    1. Após muito apanhar (e deixo aqui a resolução do meu problema para o caso de você querer atualizar o seu guia definitivo de instalação), consegui resolver o problema acima de conexão Oracle em modo de depuração dentro do Visual Basic 6. O que tive que fazer foi trocar o caminho de instalação do VB para uma pasta na raiz da maquina, de "C:\Visual Studio (x86)" para a pasta "C:\VisualStudio6", pois por alguma razão que desconheço, o Oracle não consegue reconhecer parenteses em suas strings de conexão. Assim, Se você mantiver o diretorio padrão de instalação com o (x86), o Oracle se perde e não fecha conexão em modo de depuração, executando o código diretamente dentro do VB. Achei esta solução em um site americano graças a um outro usuario. Bendito seja!!
      Ressalto que isto só deve acontecer em Windows 10 64bit, pois o sistema 32bit instala o Visual Studio 6 na pasta "C:\Program Files" padrão.

      Excluir
    2. Agradeço pela contribuição amigo, realmente eu não sabia dessa particularidade do Oracle 10g. Meus sistemas utilizam ADODB com o MS SQL Server sem problemas.

      Um forte abraço!

      Excluir
  13. No meu caso funcionou corretamente no windows 7, porem o Package & Deployment Wizard nao funciona, ele trava no meio do caminho, mesmo configurando as propriedades em modo de compatibilidade e como administrador.
    Provavelmente é alguma alteracao que deve ser feita no VB6DEP.INI

    ResponderExcluir
  14. Tentei sua solução, sem sucesso. A alternativa foi abrir o vbp manualmente no notepad e onde estava Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.2#0; MSCOMCTL.OCX, colocar Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
    Funcionou

    ResponderExcluir
  15. Cara, você é D++++++++!!!
    Muito obrigado por tantas dicas. Adoro o VB6.
    Adauto D Silva

    ResponderExcluir
  16. Muito bons seus posts, me ajudaram bastante. Desenvolvo em VB6 há anos. Me serve bastante. Amo a linguagem. Tá, podem dizer "Ainnn .NET é muito melhor, muito mais recursos", tá mas o .NET leva mó tempo pra abrir, o consumo de memória vai no pico, pra compilar, quando eu abro a IDE do .NET, falta luz no bairro todo...Eu não preciso do .NET pra fazer coisas simples. É matar formiga com bazuca.
    Grande abraço

    ResponderExcluir

Postar um comentário