web-dev-qa-db-fra.com

"Fichier non trouvé" à exécuter d'un code VBA dans Access 2007

Je travaille sur un gros projet Access 2003 avec Microsoft Access 2007. Récemment, certains utilisateurs ont commencé à rencontrer des problèmes avec les boutons de mes formulaires. Par exemple, sans aucune raison spécifique, cliquer sur un bouton ou essayer d'exécuter du code renvoie l'erreur:

Fichier non trouvé

Il n'y a aucun moyen de passer en mode débogage. Lorsque cela se produit, la seule chose à faire est de redémarrer la base de données. J'ai essayé d'ajouter la commande Stop au début du bloc exécuté pour essayer de le déboguer, mais aucun code n'est exécuté. C'est comme une erreur de compilation mais cela n'arrive que 5 à 10% du temps, ce qui est vraiment bizarre.

Après quelques recherches, j'ai constaté que d'autres personnes rencontraient le même problème, par exemple this et this link. Il existe également d'autres exemples, sans solutions réelles pour le moment.

Ma base de données peut fonctionner pendant une semaine, puis le problème recommence. La moitié du temps et les utilisateurs ne peuvent pas faire grand chose; ils doivent redémarrer la base de données une ou deux fois pour la remettre en marche. Après quelques minutes, l'erreur risque de se reproduire.

Comme il s'agit d'Access 2007 et que de nombreuses personnes sont touchées par ce bogue, je ne peux pas croire que ce n'est pas plus documenté.

Quel est le problème? La base de données est-elle en partie partiellement corrompue? Que devrais-je faire? C'est vraiment énervant.

12
dnLL

Si j'étais dans cette situation, l'une des premières choses que j'essaierais serait de faire une opération complète de décompilation + compact + recompilation sur le fichier de base de données front-end, puis de distribuer ce front-end mis à jour aux utilisateurs pour voir si cela se produisait. améliore les choses.

Des instructions détaillées sur les étapes décompiler + compact + recompiler sont disponibles ici . Remarque: Assurez-vous de lire les recommandations supplémentaires de David W. Fenton dans sa réponse.

14
Gord Thompson

Je venais de vivre cela pour la première fois. J'avais apporté de nombreuses modifications de codage dans un formulaire et je devais redémarrer mon PC sans terminer le débogage du code. Lorsque j'ai ouvert l'application, j'ai immédiatement reçu le message "fichier non trouvé" (il démarre automatiquement un formulaire différent).

Sur un coup de tête, je suis allé au formulaire en question et ai commenté le code de tout le module et le problème a disparu. Une fois que je suis rentré et que je n'ai pas commenté ce code, tout fonctionnait toujours normalement. Je pouvais continuer à déboguer ce code et je vivais heureux pour le reste de la journée.

2
Dennis Flory

bien que ce fil ait plus d'un an, j'aimerais partager une autre observation très utile. 

Cette erreur "Fichier non trouvé:" peut être due à un comportement d'enregistrement différent des versions d'Office et peut ne rien avoir à faire avec votre code! En cas d'erreur, essayez d'ouvrir et de sauvegarder votre fichier problématique dans une autre version d'Office. Cela pourrait fonctionner correctement dans votre version d'Office principale.

Détails: Même si je programmais VBA depuis des années, je n’avais jamais eu une erreur non sollicitée "Fichier non trouvé:". Bizarre aussi que le message d'erreur ne donne pas un nom de fichier pour le fichier non trouvé. (Cela m'a rappelé une autre erreur désagréable, que VBA affiche parfois au démarrage sans raison apparente et de manière erratique.) Heureusement, cette erreur a commencé après mes premières modifications dans PowerPoint 2010 après avoir testé le fichier dans PowerPoint 2016. L'erreur s'est produite lors de l'ouverture du fichier .pptm, mais j'ai n'avait pas de procédure de démarrage impliquant un fichier. J'ai donc l’idée que certains fichiers de l’archive .pptm ne sont pas trouvés. A commencé à faire une recherche rapide sur Internet et n’a trouvé que des suggestions «tirer dans le noir». Comme je pouvais démarrer PowerPoint 2013 plus facilement (machine virtuelle) que PowerPoint 2016 (partition de démarrage Windows 10 différente), j'ai essayé d'ouvrir le fichier perturbé dans PowerPoint 2013 et je n'ai rencontré aucun problème. J'ai compilé le projet VBA pour vérifier l'erreur. Rien. Et sauvegardez le fichier. Après cette ré-enregistrement dans PowerPoint 2013, le fichier semble fonctionner à nouveau dans PowerPoint 2010 et ne présentait aucun problème après les premières modifications, sauvegardes et ré-ouvertures. Cela étant dit, je me demande si la sauvegarde dans PowerPoint 2016 est particulière et si je peux répliquer/si je vais rencontrer l'erreur à nouveau si je sauvegarde le fichier dans PowerPoint 2016 et que je reviens à PowerPoint 2010. (Je prendrai note de ce fil de discussion. d'ajouter de nouvelles informations une fois que j'ai travaillé avec ce fichier dans PowerPoint 2016.)

Espérons que cette observation permettra d’épargner de nombreuses inutilement/réinstallations inutiles d’Office et d’autres tentatives désespérées.

À votre santé!

J'ai eu ce même problème MS Excel.

En appuyant sur un bouton, une erreur inutile de type Fichier introuvable est apparue.

J'ai parcouru toutes les suggestions ci-dessus et aucun changement ou aide.

COMPLÈTEMENT ACCIDENTAL, j'ai supprimé un module que j'utilise pour mettre à jour le statut de l'application. Cela a également un peu de stockage de matrice à l'intérieur. Toutefois, lors de la suppression de ce module (et de la mise en commentaire de références dans le code), il semble que le problème soit maintenant résolu entre utilisateurs.

Un problème, c'est que j'ai le même nom de module dans plusieurs déploiements différents de Compléments Excel. Je soupçonne que lors de la première utilisation, Excel ne peut pas assumer automatiquement la différence entre eux. 

J'avais remarqué une erreur WORK AROUND pour laquelle vous créez un point de rupture sur la première ligne de code du bouton en question puis reprenez sur pause - je suppose que cela a aidé Excel à évaluer et à nommer les modules afin de ne pas causer de conflits.

1
SwiftJr

Avait le même problème. Je suis tombé sur la solution par accident. Pour une raison quelconque, simplement ajouter une procédure d’événement sur clic a tout amélioré.

  • Ouvrir le formulaire en mode création
  • Sélectionnez un objet sur le formulaire
  • Appuyez sur F4 pour afficher les propriétés de l'objet.
  •  object properties
  • Evénement> Sur Cliquez> menu déroulant> cliquez sur [Procédure événementielle]
  • Cliquez ensuite sur les trois points pour créer un nouvel événement et lancez l'éditeur Visual Basic. Cela ajoutera également du code par défaut dans l'éditeur Visual Basic.
  • Ne pas faire d'autres changements
  • Enregistrer et fermer les modifications apportées au formulaire
  • Redémarrer la base de données

Pour ce que cela vaut, alors que je me débattais avec ce problème, l'erreur s'est résolue par d'autres moyens, mais aucun d'entre eux n'était reproductible.

1
LeftyMaus

J'ai trouvé une autre solution (du moins dans mon cas): en essayant de trouver l'erreur, j'ai testé l'application que j'ai créée sur un ordinateur d'un collègue. En quelque sorte, cela réinitialise tout ce qui a mal tourné dans le fichier. Ensuite, j'ai pu rouvrir le fichier sur mon ordinateur et tout a fonctionné comme il se doit!

EDIT: J'ai réalisé que l'erreur, dans mon cas, semble avoir été liée d'une certaine manière à l'utilisation de SendKeys (voir ma tentative d'automatisation d'un rapport ici sur SO).

1
rohrl77

La question n'est que vos références. L'un des fichiers de vos références a été déplacé/supprimé/mis à jour. Supprimez et ré-ajoutez vos références pour déterminer laquelle.

1
Steve M.

Je viens d'avoir ce problème. Dans mon cas, je pense que le problème est d'avoir un module VBA vierge. Je déplaçais les procédures d'un module à un autre et je me suis retrouvé avec un module vierge. Je ne pouvais pas supprimer le module manuellement et chaque fois que j'essayais de créer une procédure pour supprimer des modules vides, je recevais l'erreur "Fichier non trouvé" et la procédure que je venais de créer était masquée. J'ai fini par revenir à une sauvegarde.

0
Hugh Seagraves

Ce problème existe depuis de nombreuses années dans Access 2010. Toujours sous la forme Autoexec qui s’ouvre au démarrage de msaccess. J'ai essayé de créer un formulaire très simple qui appelle le formulaire original plus complexe. À ma grande surprise, plus le problème a été déplacé, c'est le nouveau formulaire simple. Par essais et erreurs, j’ai trouvé qu’en éditant simplement la nouvelle forme simple d’Autoexec, le problème disparaîtrait, mais reviendrait au hasard des mois plus tard TOUJOURS après que j’ai apporté des modifications de programmation ailleurs. Parfois, au lieu de l'erreur de fichier introuvable, j'obtiens simplement un blocage d'accès - mais la solution est la même procédure - faire une petite modification dans le fichier autoexec (il suffit d'ajouter une nouvelle ligne vide). Mon projet est passé par de nombreuses versions d'accès (2000 -> 2010). S'il existait un moyen d'automatiser la modification de mon formulaire autoexec, le redémarrage de l'accès serait une solution de contournement. Je n'ai encore trouvé aucun moyen. 

0

J'ai eu un problème similaire à celui-ci. Une erreur "Fichier introuvable".

J'ai désactivé la correction automatique et, après avoir cliqué sur plusieurs invites/avertissements qui m'avaient préoccupé, j'ai rouvert la base de données et l'erreur a disparu.

Lors de la réouverture de la base de données, le problème a été résolu.

Je suppose que cela résoudra de nombreuses erreurs "Fichier non trouvé" qui sont probablement liées à la perte de la référence d'une table de liens temporaire pour une raison quelconque.

0
enderland

J'ai eu ce problème aussi, et compact/réparation n'a pas résolu ce problème. Dans mon cas, j'avais un ancien module VBA qui n'était plus utilisé et qui référencait une classe d'objets qui n'existait plus. Supprimer le code non compilateur a résolu le problème pour moi.

0
SmrtGrunt

J'ai eu ce problème et résolu de cette façon: j'ai éliminé le formulaire où se trouvait le code vba et importé le même formulaire à partir d'un fichier de sauvegarde créé auparavant.