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. Obrigado por compartilhar!

      Excluir
    3. 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

Postar um comentário