IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Microsoft Scripting engine : 64 bits? [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 82
    Points : 47
    Points
    47
    Par défaut Microsoft Scripting engine : 64 bits?
    Bonjour,

    Jusqu'au aujourd'hui, j'utilisais la version 32bits de office 2007. Je viens de m'abonner à la version 2013 64bits. Les deux version ne cohabitent pas, dixit l'installateur, donc: exit 2007.

    Ma base de donnée contient une macro autoexec qui point vers une fonction VBA que j'ai pompée je ne sais plus où, mais qui fait un backup de la base sur un autre drive. Cette function utilise un 'filesystemobject' qui provient du 'Microsoft Scripting Runtime', j'ai vérifié, il est activé dans les références VBA de ma base. Néanmoins à l'ouverture de la base, où à l'exécution de la macro, la fenêtre vba s'ouvre et j'ai un message d'erreur:
    Erreur de compilation : Projet ou bibliothèque introuvable
    La ligne ou je déclare ma variable 'filesystemobject' est mise en bleu

    Ma base se trouve dans un emplacement déclaré "sécurisé", pas d'avertissement sécurité au démarrage.

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Option Compare Database
     
    Public Function BackupCopy()
     
    'This function will allow you to copy a db that is open,
     
    'You must set a reference to the 'Microsoft Scripting Runtime' for the CopyFile piece to work!
     
    Dim fso As FileSystemObject
     
    Dim sSourcePath As String
    Dim sSourceFile As String
    Dim sBackupPath As String
    Dim sBackupFile As String
     
    sSourcePath = CurrentProject.Path & "\"
    sSourceFile = CurrentProject.Name
    sBackupPath = "n:\carnetdevol\Backup\"
    sBackupFile = "CarnetDeVol2007_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".accdb"
     
     
    Set fso = New FileSystemObject
    fso.CopyFile sSourcePath & sSourceFile, sBackupPath & sBackupFile, True
    If sSourcePath <> "N:\CarnetDeVol\" Then
     fso.CopyFile sSourcePath & sSourceFile, "n:\carnetdevol\CarnetDeVol2007.accdb", True
     End If
    sBackupPath = "x:\onedrive\CarnetDeVol\"
    fso.CopyFile sSourcePath & sSourceFile, sBackupPath & sBackupFile, True
    Set fso = Nothing
     
    'Beep
    'MsgBox "Backup was successful and saved @ " & Chr(13) & Chr(13) & sBackupPath & Chr(13) & Chr(13) & "The backup file name is " & Chr(13) & Chr(13) & sBackupFile, vbInformation, "Backup Completed"
     
    End Function
    Est ce une erreur due à la version 64bits non compatible? Je précise que j'utilise Win7 64bits (aussi auparavant avec Access 2007 32bits)

    Les autres fonctions dans ma base ne faisant pas référence à cet objet ne créent pas d'erreurs.

    Merci de vos conseils.
    Xavier

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 364
    Points : 1 979
    Points
    1 979
    Par défaut
    A mon avis, tu as affaire a des conflits de references.

    Tu peux essayer de supprimer ta reference a Microsoft Scripting Runtime, fermer ta base, re-ouvrir, rajouter la reference et voir si cela fonctionne.
    Ou bien utiliser la methode de l'attachement tardif, qui est plus portable, exemple ci-dessous (tes lignes de code a changer sont en commentaire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '// Dim fso As FileSystemObject
    Dim fso as Object
     
     
    '// Set fso = New FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par yupyupxav Voir le message
    Bonjour,

    Est ce une erreur due à la version 64bits non compatible? Je précise que j'utilise Win7 64bits (aussi auparavant avec Access 2007 32bits)

    Merci de vos conseils.
    Xavier
    Je n'ai pas Access, mais si cela peut te rassurer, j'ai, pas plus tard qu'hier, utilisé sans problème, Microsoft Scripting Runtime dans une macro VBA-Word 64 bits.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 82
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    la methode de Deedolith de l'attachement tardif fonctionne parfaitement.
    Merci beaucoup

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 034
    Points : 24 607
    Points
    24 607
    Par défaut
    Bonjour,
    Le Late binding, à mon avis, doit être généralisé à toutes les applications. Cependant sans le traitement d'erreurs adapté cela n'a qu'une faible valeur ajouté.

    En effet, avec un Late binding, l'application démarre correctement, à la différence du Early. Cependant au moment de l'appel de la bibliothèque, si celle-ci n'est pas présente (ou pas référencée), une erreur sera levée, en mode runtime elle se fermera purement et simplement.

    Un petit exemple de ça sur mon blog :
    http://blogaccess.free.fr/

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Microsoft.Build.Engine introuvable lors de l'ouverture de mon projet
    Par Nanos dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 25/04/2010, 20h30
  2. [2010] Problèmes Microsoft Office 2010 64 bits
    Par francis64 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 15/04/2010, 08h54
  3. [XL-2003] Cocher la référence Microsoft Scripting Runtime par le code
    Par doowy38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/06/2009, 15h38
  4. Utilisation de Microsoft Script Editor
    Par Claude l'ancien dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/03/2006, 11h27
  5. Pages Access avec Microsoft Script Editor
    Par tech250 dans le forum Access
    Réponses: 1
    Dernier message: 18/09/2005, 21h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo