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

VBScript Discussion :

un vbs pour identifier la version d'un fichier access


Sujet :

VBScript

  1. #1
    Membre éclairé
    Homme Profil pro
    nop
    Inscrit en
    Mars 2015
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : nop
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 436
    Points : 658
    Points
    658
    Par défaut un vbs pour identifier la version d'un fichier access
    bonjour,

    j'ai un script .vbs qui sert normalement à identifier la version d'un fichier mdb Access de la manière la plus simple possible.
    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
    Set objAccess = CreateObject("Access.Application")
    objAccess.OpenCurrentDatabase "C:\helium.mdb"
    intFormat = objAccess.CurrentProject.FileFormat
    Select Case intFormat
    Case 1 Wscript.Echo "Microsoft Access 1.1 (v1-1992)"
    Case 2 Wscript.Echo "Microsoft Access 2 (v2-1993)"
    Case 7 Wscript.Echo "Microsoft Access 95 (v7-1995)"
    Case 8 Wscript.Echo "Microsoft Access 97 (v8-1997)"
    Case 9 Wscript.Echo "Microsoft Access 2000 (v9-1999)"
    Case 10 Wscript.Echo "Microsoft Access 2002 (v10-2001)"
    Case 10 Wscript.Echo "Microsoft Access 2003 (v11-2003)"
    Case 12 Wscript.Echo "Microsoft Access 2007 (v12-2007)"
    Case 14 Wscript.Echo "Microsoft Access 2010 (v14-2010)"
    Case 15 Wscript.Echo "Microsoft Access 2013 (v15-2013)"
    Case 16 Wscript.Echo "Microsoft Access 2016 (v16-2015)"
    Case Else Wscript.Echo "Unknown Version Format "
    End Select
    Seulement quand je l'exécute en ligne de commande (cmd) sous Win7 (64bits), j'ai ce message d'erreur :

    Can't find Language DLL msain.dll
    puis il est suivi de :

    script : C:\monscript.vbs
    ligne : 1
    caract : 1
    erreur : Un composant ActiveX ne peut pas créer un objet 'Access.application'
    code : 800A01AD
    source : erreur d'exécution Microsoft VBscript
    Ces erreurs indiquent-elles que je dois avoir Microsoft Access installé sur mon poste pour exécuter ce script ?
    c'est un peu balo car sinon je n'aurai pas besoin du script pour identifier ma version du fichier mdb

  2. #2
    Membre éclairé
    Homme Profil pro
    nop
    Inscrit en
    Mars 2015
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : nop
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 436
    Points : 658
    Points
    658
    Par défaut
    j'ai résolu la première erreur "Can't find Language DLL msain.dll " en installant le runtime access 2010 AccessRuntime_X64.exe
    qu'on trouve dans la faq ici:
    http://access.developpez.com/outils/?page=deploy
    (bravo à developpez.net/ d'être en 3eme résultats de google pour ça )

    par contre, la deuxième erreur reste et me bloque.

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    Ces erreurs indiquent-elles que je dois avoir Microsoft Access installé sur mon poste pour exécuter ce script ?
    toutafé

    mais il est toujours possible d'interroger le fichier au moyen du composant DAO
    un exemple :
    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
    Option Explicit
    Dim db
    Dim dbe
    Dim wrkJet
    Dim Prop
    Dim index
    Dim result
    Dim filename
     
    filename = "" ' définir ici le nom complet du fichier (avec son chemin)
     
    Set dbe = CreateObject("DAO.DBEngine.120") 'pas de version independent progID alt : "DAO.DBEngine.36"
    Set wrkJet = dbe.CreateWorkspace("", "admin", "", 2) 'dbUseJet = 2
    Set db = wrkJet.OpenDatabase(filename,False,True) 'non exclusif et lecture seule
    On Error Resume Next  'indispensable car certaines propriétés systèmes sont protégées
    index = 0
    result = ""
    For Each Prop In db.Properties
    	index=index+1
    	result = index & "  " & Prop.Name & " : " & Prop.Value & vbCrLf & result
    Next
    Wscript.Echo result     
    WScript.Echo db.Properties("AccessVersion") & " " & db.Properties("Build")
    Wscript.Echo db.Version ' propriété version de l'objet database
    db.Close
    Set db = Nothing
    Set wrkJet = Nothing
    Set dbe = Nothing
    une fois la variable filename renseignée ce code renverra toutes les propriétés du fichier ainsi que la version de l'objet database
    un semblant de correspondance est fourni par MS ici
    tu trouveras peut-être sur le sous-forum Access quelqu'un qui te renseignera sur les correspondances précises entre les propriétés "AccessVersion" et "Build"
    et les versions d'Access - si elles existent...
    mais il faut bien comprendre qu'une version d'Access donnée peut parfaitement créer un fichier d'un format antérieur
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Membre éclairé
    Homme Profil pro
    nop
    Inscrit en
    Mars 2015
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : nop
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 436
    Points : 658
    Points
    658
    Par défaut
    Citation Envoyé par omen999 Voir le message
    bonjour,

    toutafé

    mais il est toujours possible d'interroger le fichier au moyen du composant DAO
    un exemple :
    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
    Option Explicit
    Dim db
    Dim dbe
    Dim wrkJet
    Dim Prop
    Dim index
    Dim result
    Dim filename
     
    filename = "" ' définir ici le nom complet du fichier (avec son chemin)
     
    Set dbe = CreateObject("DAO.DBEngine.120") 'pas de version independent progID alt : "DAO.DBEngine.36"
    Set wrkJet = dbe.CreateWorkspace("", "admin", "", 2) 'dbUseJet = 2
    Set db = wrkJet.OpenDatabase(filename,False,True) 'non exclusif et lecture seule
    On Error Resume Next  'indispensable car certaines propriétés systèmes sont protégées
    index = 0
    result = ""
    For Each Prop In db.Properties
    	index=index+1
    	result = index & "  " & Prop.Name & " : " & Prop.Value & vbCrLf & result
    Next
    Wscript.Echo result     
    WScript.Echo db.Properties("AccessVersion") & " " & db.Properties("Build")
    Wscript.Echo db.Version ' propriété version de l'objet database
    db.Close
    Set db = Nothing
    Set wrkJet = Nothing
    Set dbe = Nothing
    une fois la variable filename renseignée ce code renverra toutes les propriétés du fichier ainsi que la version de l'objet database
    un semblant de correspondance est fourni par MS ici
    tu trouveras peut-être sur le sous-forum Access quelqu'un qui te renseignera sur les correspondances précises entre les propriétés "AccessVersion" et "Build"
    et les versions d'Access - si elles existent...
    oui mais ce que tu as donné n'est-il pas un script VBA et non plus un vbs pour le powershell (exécuté par exemple sur un windows sever en ligne de commande ou win7).

    mais il faut bien comprendre qu'une version d'Access donnée peut parfaitement créer un fichier d'un format antérieur
    ma petite problématique est justement que j'ai un fichier accès (une base de données perso) dont je souhaite identifier la version pour ensuite l'altérer avec la bonne version de MS Access (que je me procurerai et donc je n'ai pas envi de les acheter/installer en cascade).

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    mais ce que tu as donné n'est-il pas un script VBA
    non c'est bien du VBScript
    il suffit de le sauvegarder avec la bonne extension xxx.vbs
    et le lancer direct en ligne de commande

    un vbs pour le powershell
    vbs et powershell sont deux produits totalement différents
    il doit exister également un sous-forum powershell si
    tu veux l'écrire selon sa syntaxe
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Membre éclairé
    Homme Profil pro
    nop
    Inscrit en
    Mars 2015
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : nop
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 436
    Points : 658
    Points
    658
    Par défaut
    super ce script fonctionne en cmd et m'affiche donc une version 4.0 . mais quelle version d'access ou du pack office est-ce donc !?...

    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
    Option Explicit
    Dim db
    Dim dbe
    Dim wrkJet
    Dim Prop
    Dim index
    Dim result
    Dim filename
     
    filename = "C:\helium.mdb" ' définir ici le nom complet du fichier (avec son chemin)
     
    Set dbe = CreateObject("DAO.DBEngine.120") 'pas de version independent progID alt : "DAO.DBEngine.36"
    Set wrkJet = dbe.CreateWorkspace("", "admin", "", 2) 'dbUseJet = 2
    Set db = wrkJet.OpenDatabase(filename,False,True) 'non exclusif et lecture seule
    On Error Resume Next  'indispensable car certaines propriétés systèmes sont protégées
    index = 0
    result = ""
    For Each Prop In db.Properties
    	index=index+1
    	result = index & "  " & Prop.Name & " : " & Prop.Value & vbCrLf & result
    Next
    Wscript.Echo result     
    WScript.Echo db.Properties("AccessVersion") & " " & db.Properties("Build")
    Wscript.Echo db.Version ' propriété version de l'objet database
    db.Close
    Set db = Nothing
    Set wrkJet = Nothing
    Set dbe = Nothing

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2013, 14h34
  2. Commande pour trouver la version de Linux
    Par Gogoye dans le forum Administration système
    Réponses: 11
    Dernier message: 12/02/2013, 15h43
  3. VBA 2003 - Identifier la version d'un fichier non ouvert
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/03/2009, 13h07
  4. Réponses: 2
    Dernier message: 16/01/2006, 11h34
  5. Réponses: 2
    Dernier message: 30/06/2005, 14h58

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