Visual Basic 5 x Visual Basic 6
Antes de começar uma
perguntinha: Quais as duas últimas versões do Visual Basic ? 
Resposta : Visual Basic
5 - service pack 3 e Visual Basic 6 - service
pack 5 
Obs: Espera-se que você esteja rodando as versões com os respectivos service packs.
Não estou considerando o VB.NET por que as mudanças foram tantas que nem podemos compará-lo com as versões anteriores do VB.
Então podemos concluir que tem muita gente usando o VB 5 e o VB 6 , não sei estimar a proporção, mas creio que uma grande parte ainda usa o VB 5. Vamos considerar então duas situações :
Situação 1 - Você usa o VB5 e quer rodar uma aplicação feita no VB6 . Será que você consegue ???
Depende !!!
Agora podemos ter o seguinte problema: Você pode criar uma aplicação no VB6 que faça referência a Windows Common Controls , se a referência for para a versão do VB5 ( sim , você pode referênciar a versão do windows common controls para o vb5 no vb6 , dê uma olhada na figura abaixo.)
|  | - O componente Microsoft Windows Common Controls possui versões para VB5 e VB6 quando você instala a versão do VB6 | 
Situação 2 - Você usa o VB6 e que rodar aquelas aplicações feitas no VB5 ? Vai rodar sem problemas ?
Quer saber a verdade ??? Quase todos os controles usados no VB5 serão automaticamente atualizados para a versão do VB6. Eu disse QUASE TODOS. Os controles do VB5 abaixo relacionados NÃO serão atualizados:
| Controle VB5 NÃO atualizado | Controle VB6 correspondente | 
| Comctl32.ocx | Mscomctl.ocx | 
| Comct232.ocx | Mscomct2.ocx | 
| Mschart.ocx | Mschrt20.ocx | 
Embora a documentação da Microsoft diga que a atualização deverá ocorrer , ela não ocorre ; Os novos (VB6) controles não são compatíveis com os antigos (VB5) , pois de acordo com as regras da COM ( Component Object Model ) eles terão novos nomes e novos GUIDs e por consequência terão novas Typelibs , e , quando o VB carrega um projeto ele checa a versão da TypeLib , dai ele não vai saber se os controles foram atualizados pois as TypeLibs para os novos controles tem um GUID diferente dos controles antigos.
O que fazer então ???
- Arregaçe as mangas :
| Object =
        {831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0;
        MSCOMCTL.OCX Object = {86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCT2.OCX Object = {65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0; MSCHRT20.OCX | 
| Object =
        "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0";
        "MSCOMCTL.OCX" Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX" Object = "{65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCHRT20.OCX" | 
Cuidado : A atualização acima NÃO é igual a do item 1.(note as aspas)
| Altere ComctlLib.ImageList para MSComctlLib.ImageList | 
Tá com preguiça te fazer todo
este serviço ???  
 
Então baixe uma ferramenta que faz o serviço para você : ActiveX Control Update Utility
Falei e disse !!! Até maix ... (também de uma olhada
nos artigos : Q190952 and Q194412 da KB)
 (também de uma olhada
nos artigos : Q190952 and Q194412 da KB)
José Carlos Macoratti