web-dev-qa-db-fra.com

Qu'est-ce qui provoque "Erreur d'automatisation Erreur non spécifiée" sur Worksheet_Activate?

J'ai une feuille de calcul nommée "Dates" (le nom d'objet est A_Dates) qui doit être calculée lors de son activation (il est à noter que cela se trouve dans mon classeur de macros personnelles). J'ai régulièrement des cahiers ouverts contenant trop de calculs pour que l'auto-calcul soit possible. J'ai donc auto-calc fixé à manuel, et le code suivant dans la feuille de calcul:

Private Sub Worksheet_Activate()
   A_Dates.Calculate
End Sub

Cela a bien fonctionné au cours des 3 derniers mois, jour après jour. Hier, ça a cessé de fonctionner. Il jette maintenant cette erreur sur la ligne de déclaration:

Microsoft Visual Basic
Automation error
Unspecified error
[OK] [Help]

J'ai essayé de changer la façon dont je référence la feuille, en utilisant:

Sheets("Dates").Calculate

et

ActiveSheet.Calculate

en vain. J'ai également inclus la gestion des erreurs:

On Error Resume Next

ce qui ne l'empêche pas. Je suis même allé jusqu'à:

Private Sub Worksheet_Activate()
   On Error GoTo headache
   Sheets("Dates").Calculate
Exit Sub

headache:
   Exit Sub
End Sub

et ça se voit toujours. Je suis totalement désemparé. Aidez-moi?

Information additionnelle

J'ai les références suivantes et les utilise toutes dans les différentes macros de ce classeur:

Visual Basic pour applications

  • Bibliothèque d'objets Microsoft Excel 12.0
  • Automatisation OLE
  • Bibliothèque d'objets Microsoft Office 12.0
  • Microsoft Scripting Runtime
  • Microsoft Forms 2.0 Object Runtime
  • Bibliothèque d'objets Microsoft HTML
  • Contrôles Internet Microsoft
  • Bibliothèque Microsoft ActiveX Data Objects 2.8
  • Bibliothèque Microsoft ActiveX Data Objects Recordset 2.8
5
Farfromunique

J'ai trouvé le problème. Une de mes formes avait un contrôle qui apparemment avait cessé de fonctionner, et cela avait un effet d'entraînement.

Le contrôle en question était "Microsoft ProgressBar Control, version 6.0". Je ne sais pas POURQUOI cela a cessé de fonctionner, mais la suppression du formulaire (et, bien sûr, de toutes les références qui y sont faites) a résolu le problème.

3
Farfromunique

Nous avons rencontré le même problème, mais en passant, plusieurs personnes utilisent toutes les mêmes macros avec succès, mais l'une d'elles a le problème "Erreur d'automatisation" "Erreur non spécifiée". Votre réponse m'a aidé à identifier que le problème pourrait être dû au "Microsoft ProgressBar Control". (Merci beaucoup)

Mais au lieu de supprimer le formulaire, j’ai désenregistré et enregistré le fichier MSCOMCTL.OCX sur le PC de l’utilisateur qui rencontrait des problèmes et il est de nouveau en affaires. J'aimerais connaître les raisons qui ont poussé l'enregistrement du contrôle à aller au sud - ce n'est pas la première fois que je détecte des problèmes avec ce contrôle.

Pour annuler l'enregistrement et enregistrer le contrôle:

Utilisez une "invite de commande élevée" (une invite de commande est exécutée en tant qu'administrateur), exécutez les commandes suivantes:

 Regsvr32 /u c:\windows\SysWOW64\MSCOMCTL.OCX

 Regsvr32 c:\windows\SysWOW64\MSCOMCTL.OCX

NOTE: le/u désenregistre l'ocx

11
Troy Brooks

Chaque fois que de telles erreurs se produisent, la première chose à faire est de nettoyer le code avec http://www.appspro.com/Utilities/CodeCleaner.htm . C'est un complément gratuit, mais vous pouvez aussi le faire manuellement. Copiez simplement votre code hors du module et dans un fichier texte (ou faites un clic droit et exportez). Supprimez ensuite le code dans le module, compilez, enregistrez et réinstallez le code.

Lorsque Excel compile "à la volée", il crée un p-code qui est ensuite compilé en code machine. Parfois, en particulier avec une édition lourde, le p-code est corrompu. Copier le code, le supprimer et le copier oblige Excel à régénérer le code.

J'ai résolu un comportement vraiment étrange avec cette méthode. Espérons que cela fonctionne pour vous aussi.

5
Dick Kusleika

Je viens d'avoir ce problème, pas de chance avec la suppression des contrôles de chargement ou l'ajout/déplacement de références.

Fixé en ajoutant une DoEvents pour Internet Explorer comme ceci:

Do
  DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

Notez aussi que cette valeur peut changer de "rebond" entre "complet" et "occupé", une boucle plus robuste ici peut donc être bénéfique.

1
Steve

Ma solution à ce problème consistait à ajouter les références suivantes dans VBA - Outils - Références.

Bibliothèque Microsoft ActiveX Data Objects 2.8 Bibliothèque Microsoft ActiveX Data Objects Records 2.8

1
Ian

J'ai vu cette erreur apparaître comme une boîte de dialogue juste avant qu'Excel cesse de fonctionner. Je déboguais un nouveau script qui ouvre plusieurs centaines de fichiers Excel et en extrait des informations. Pour résoudre ce problème, j'ai ajouté plusieurs commandes 'DoEvents' et mon problème avec cette erreur est parti immédiatement.

0
Gabe F

Essayez de compiler votre programme dans une version inférieure du système d'exploitation.

0
zubasub_19