2012-07-18 5 views
0

J'essaie de passer d'une macro VBA Excel de Windows XP à Windows 7. Les deux versions de Windows sont des systèmes d'exploitation 32 bits. Ma version de Windows 7 est l'édition Enterprise.Windows XP Excel VBA tombe en panne sur Windows 7

Le code VBA fonctionne correctement sous Windows XP. Lorsque j'ai essayé d'exécuter le code sur Windows 7, il se bloque et ne signale aucune description d'erreur.

J'ai enregistré msinet.ocx, ce qui semble être requis pour Microsoft Internet Transfer Control 6.0. J'ai également essayé de résoudre les problèmes de sécurité en ajoutant les composants com supplémentaires tabctl32, comctl332/232/32 et comdlg32, qui sont tous des fichiers ocx. Cependant, rien ne change - mon code échoue toujours sur Windows 7. Une fois que msinet n'était pas enregistré, Excel VBA ouvre mon classeur, signale la référence manquante msinet et ne fonctionne pas du tout. Comment puis-je résoudre ce problème?

+1

Avez-vous essayé de compiler votre code sur la machine Windows 7? – assylias

+0

Oui, j'ai essayé. Mais il manque une référence et aucun moyen de le réparer. J'aime savoir s'il y a des problèmes de compatibilité dans le code VBA de Win7/xp. – Gionata

+0

Est-ce qu'il se bloque à l'ouverture du classeur ou lors de l'exécution de certaines procédures? Avez-vous vérifié les appels d'API pour les changements de syntaxe/paramètres? – CaBieberach

Répondre

2

Maladroit. Ouvrez la feuille dans une session Excel avec Macro Security réglé sur haut ou moyen, et répondez 'Non' à la boîte de dialogue sur l'activation des macros VBA dans la feuille.

S'il s'ouvre, vous devriez toujours pouvoir voir le projet, et ceci pourrait montrer une référence manquante évidente ou une erreur si vous essayez de le compiler.

Suivant: enregistrez le classeur au format html et fermez Excel. Effacez le dossier temporaire, redémarrez Excel, ouvrez le fichier html et enregistrez-le au format Excel. Si vous avez de la chance, tous les objets et références existants seront effacés et remplacés par des versions compatibles avec votre nouveau système d'exploitation.

Cela fonctionne environ la moitié du temps.

+0

J'ai essayé votre solution. Aucune réaction positive. Il y a deux faits qui me confondent. Si msinet.ocx n'est pas installé, les références indiquent clairement que la référence est manquante, mais Excel ne se bloque pas et l'application ne fonctionne pas. Une fois que msinet.ocx est installé et ActiveX activé, Excel se bloque. Il n'y a pas de référence manquante. Je suppose que msinet n'est pas du tout compatible avec Win7 ... est-ce vrai? – Gionata

+0

Excuses pour le retard, je suis sorti du pays depuis un mois ... –

+0

Vous avez effectivement trouvé quelque chose ici: les techniques standard de nettoyage des fichiers Excel corrompus ne modifient pas le comportement observé. Vous avez donc éliminé une source possible du problème: ce n'est pas votre fichier, c'est msinet.ocx - et je suggérerais que votre prochaine recherche consiste à supprimer toutes les instances et références à cet ocx, et voir si le fichier est stabilisé. –

1

Le système ne plante pas lorsque msinet.ocx n'est pas enregistré ne signifie pas que c'est le problème.

Si vous avez un appel à cette bibliothèque (Msinet.ocx) dans toute procédure à l'intérieur de ou appelé le module deThisWorkbook et vous avez cette bibliothèque non enregistrée, puis lorsque le fichier ouvre et tente d'exécuter le sur macro ouverte le module ne compilera pas et donc ne courra pas la ligne de code qui le fait planter. (Je devine seulement que cela pourrait être votre cas.)

Essayez de savoir quel appel exact fait planter votre système.

  1. Laissez msinet.ocx enregistré.
  2. Ouvrez le fichier sans activer les macros.
  3. Ensuite, exécutez manuellement étape par étape (F8) à travers le code d'ouverture de votre dossier (Private Sub Workbook_Open())

Finalement, vous atteindrez la ligne exacte de code qui rend votre plantage du système. Whit cette information, vous serez en mesure d'obtenir plus d'aide.

REMARQUE:

Pour ouvrir le fichier sans activer les macros que vous pouvez utiliser l'une des méthodes suivantes:

  • Appuyer et maintenir la touche Maj enfoncée après avoir double-cliqué sur le fichier pour l'ouvrir (à partir de l'explorateur Windows). Pour que cette méthode fonctionne, l'application Excel doit être fermée. Si l'application Excel est ouverte, accédez à l'éditeur VB et tapez application.EnableEvents=False dans la fenêtre immédiate (et appuyez sur Entrée pour l'exécuter). Sachez simplement que cela désactivera les événements sur chaque fichier dans cette instance d'Excel. Vous devrez le remettre à true ou fermer l'application (pas seulement le fichier).

1

Vérifiez si vous ne disposez pas de références à des bibliothèques manquantes, si c'est le cas, décochez-la. J'ai eu un problème similaire et cela m'a aidé dans mon cas.

Questions connexes