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 :

Appeler sdofile.dll dans mon script


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut Appeler sdofile.dll dans mon script
    Tout d'abord bien le Bonjour ,

    Voila j'explique mon problème, je suis quasi-debutant en VBS ( ).
    Mon but est de creer un script triant les fichiers word et excel d'un repertoire (ça je sais à peu pres faire) Mais le hic c'est qu'il doit les classer par Metadonnées, et plus precisement par le Modele utilisé (Ex pour Word => .Dot).

    Je sais deja qu'il faut faire appel au sdofile.dll que j'ai telecharger, mais je sais pas du tout comment l'appeler dans un script, j'ai eu beau chercher des tutos, post et autres sur l'appel de cette derniere mais sans resultat.

    C'est pourquoi je fait appel à vous autres pour simplement m'orienter sur la demarche a suivre .

    Je vous remercie d'avance ^^

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je n'ai pas compris le type de trie que tu veux faire, pourrais tu me l'expliquer ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Bah j'aimerais que mon script affiche une liste avec le nom du fichier word ou excel ainsi que son modele utilisé

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    qu'est ce que tu appelles son modèle ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Eh bien c'est la metadonnées Modele. (visible lors d'un proprietes/resumé/avancé sur un document Word ou Excel). Elle possede l'extension .dot pour word, et generalement lorsqu'on ouvre une nouvelle page vierge le modele par defaut sera Normal.Dot. Je sais pas si j'ai reussi a me faire comprendre : /

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Pour faire plus simple voila mon 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Path=inputbox("Entrez le chemin du repertoire a Analyser","Analyse JLW")
    MsgBox ShowFolderList(Path),,"Liste des fichiers du répertoire """ & Path 
     
    Function ShowFolderList(strPath)
     
     
    Dim fso, Dossiers, fic, fichiers, strListe, f, r 
    Dim Valeur, imax, z, Cible, liste 
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set Dossiers = fso.GetFolder(Path)
        Set fic = Dossiers.Files
     
        imax = 0
     
        For Each fichiers In fic
            Set f = fso.GetFile(fichiers)
            imax = imax + 1
            ReDim Preserve Tableau(2, imax)
            Tableau(1, imax) = f.Name
            Tableau(2, imax) = f.Type
     
            Valeur = 0
            For imax = 1 To imax - 1
     
                   For z = 1 To 2
                       Cible = Tableau(z, imax)
                       Tableau(z, imax) = Tableau(z, imax + 1)
                       Tableau(z, imax + 1) = Cible
                   Next
                   Valeur = 1
     
            Next
        Next
     
        For r = 1 To imax
            liste = liste & vbCrLf & r & "       	 " & Tableau(1, r) & "		" & Tableau(2, r)
        Next
        liste = vbCrLf& "N°             Nom du fichier		Type" &vbCrLf& liste    
        ShowFolderList = liste
     
    Set Ftxt = FSO.createTextFile("\\repertoire\liste.txt",true)
    Ftxt.writeline (liste)
    Ftxt.Close
    End Function
    Et dans ce code il faut que je puisse manipuler le sdofile.dll afin d'extraire les metadonnées des fichiers Word et Excel et les afficher

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    merci pour l'explication c'est plus clair pour moi maintenant (sauf que je n'ai pas vu le modèle en question dans propriété/résumé/avancé, peut être parce que nous ne sommes pas sous le même SE, moi je suis sous Win XP2)
    J'ai ça qui pourra peut être t'aider :
    http://www.activexperts.com/activmon...rFileProps.htm
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  8. #8
    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
    extraire le nom du modèle sTemplate doit donner à peu près ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set oDocProps=createobject(DSOFile.OleDocumentProperties)
    ... (ouverture du fichier avec la méthode open)
    set oSummProps=oDocsProps.SummaryProperties
    sTemplate=oSummProps.Template
    il faut regarder l'exemple vb6 fourni avec le contrôle
    la seule grosse différence avec vb6 c'est que vbs instancie toujours en 'late binding'
    c'est à dire: set objet=createobject(DSOFile.OleDocumentProperties) au lieu de set objet=new DSOFile.OleDocumentProperties
    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

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Merci à vous pour votre aide je teste de suite

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Bon je viens de changer mon code en rajoutant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Set DSO = CreateObject("DSOFile.OleDocumentProperties")
    J'ai egalement rajouté dans mon tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For Each fichiers In fic
    	set oSummProps=oDocsProps.SummaryProperties
    	sTemplate=oSummProps.Template
            Set f = fso.GetFile(fichiers)
            imax = imax + 1
            ReDim Preserve Tableau(3, imax)
            Tableau(1, imax) = f.Name
            Tableau(2, imax) = f.Type
    	Tableau(3, imax) = sTemplate
    Et depuis ces modifs, au lancement du script il m'affiche le fameux message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Un composant ActiveX ne peut pas créer un objet.: 'DSOFILE.OleDocumentProperties'
    De plus je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	set oSummProps=oDocsProps.SummaryProperties
    	sTemplate=oSummProps.Template
    Doit etre mal situé dans mon code .... : / mais comme citez plus haut je suis un Quasi-Debutant (Plus pret du dbutant que du Quasi ... ^^)

  11. #11
    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
    je suis un Quasi-Debutant
    nous le sommes tous à des degrés divers
    pour ton erreur, c'est tout simple: tu n'as pas enregistré ton composant activex dans le base de registre (c'est rappelé dans le source de l'exemple)
    pour le reste, ton code est...inquiétant
    - pas d'ouverture du fichier avec la méthode .open
    - mauvaise instanciation de l'objet oSummProps qui n'est pas cohérente avec ton objet initial DSO
    prends le temps de lire attentivement le source joint avec le contrôle car c'est une initiation à la programmation objet
    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

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Mhhh c'est bisar, pourtant je suis bien passé par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regsvr32 [filepath]\dsofile.dll
    pour l'installer.

    Et voila le code sans l'appel au sdofile.dll qui fonctionne tres bien pourtant

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Path=inputbox("Entrez le chemin du repertoire a Analyser","Analyse JLW")
    MsgBox ShowFolderList(Path),,"Liste des fichiers du répertoire """ & Path 
     
    Function ShowFolderList(strPath)
     
    Dim fso, Dossiers, fic, fichiers, strListe, f, r 
    Dim Valeur, imax, z, Cible, liste
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set Dossiers = fso.GetFolder(Path)
        Set fic = Dossiers.Files
     
        imax = 0
     
        For Each fichiers In fic
            Set f = fso.GetFile(fichiers)
            imax = imax + 1
            ReDim Preserve Tableau(2, imax)
            Tableau(1, imax) = f.Name
            Tableau(2, imax) = f.Type
     
            Valeur = 0
            For imax = 1 To imax - 1
     
                   For z = 1 To 2
                       Cible = Tableau(z, imax)
                       Tableau(z, imax) = Tableau(z, imax + 1)
                       Tableau(z, imax + 1) = Cible
                   Next
                   Valeur = 1
     
            Next
        Next
     
        For r = 1 To imax
            liste = liste & vbCrLf & r & "       	 " & Tableau(1, r) & "		" & Tableau(2, r) 
        Next
        liste = vbCrLf& "N°             Nom du fichier		Type" &vbCrLf& liste    
        ShowFolderList = liste
     
    Set Ftxt = FSO.createTextFile("\repertoire\liste.txt",true)
    Ftxt.writeline (liste)
    Ftxt.Close
    End Function
    Et c'est dans ce code, que j'aimerais rajouter le Template du fichier et dans la suite logique du tableau ... mais effectivement je lutte un peu.

    PS: Je ne desire pas une solution toute prefaite mais simplement qu'on m'explique comment procéder , Mais bon si vous insister a me fournir le code + les explications cela ne me derange pas du tout .

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon je viens de trouver le modèle et l'aide que je t'ai donné ne sert ç rien, je viens de vérifier, il n'y a pas d'argument à l'objet CIM_DATAFILE permettant de connaître le modèle.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Ok. Bah merci a vous 2 d'avoir consacré une partie de votre temps a mon probleme insolvable . Je vais essayer par d'autre moyens.

    See you.

  15. #15
    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
    don't panic
    je ne connaissais pas ce contrôle et je l'ai testé
    j'en ai profité pour rectifier (le minimum) ton bourrin
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Option Explicit
    Dim Path,DSO
    Set DSO = CreateObject("DSOFile.OleDocumentProperties")
    Path=inputbox("Entrez le chemin du repertoire a Analyser","Analyse JLW")
    MsgBox ShowFolderList(Path),,"Liste des fichiers du répertoire """ & Path 
     
    Function ShowFolderList(strPath)
     
    Dim fso, Dossiers, fic, fichiers, strListe, f, r 
    Dim Valeur, imax, z, Cible, liste, Ftxt
    Dim oSummProps
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set Dossiers = fso.GetFolder(Path)
        Set fic = Dossiers.Files
     
        imax = 0
     
        For Each fichiers In fic
            Set f = fso.GetFile(fichiers)
            imax = imax + 1
            ReDim Preserve Tableau(2, imax)
            Tableau(1, imax) = f.Name
            Tableau(2, imax) = f.Type
     
            DSO.Open Path & "\" & f.Name, True 		'ouverture fichier en ro
            If DSO.IsOleFile Then
            	Set oSummProps=DSO.SummaryProperties 	'récupération des propriétés
            	Tableau(0, imax) = oSummProps.Template 	'bingo...
            Else
            	Tableau(0, imax) = "néant"
    	End If
            DSO.Close
     
            Valeur = 0
            For imax = 1 To imax - 1
     
                   For z = 0 To 2
                       Cible = Tableau(z, imax)
                       Tableau(z, imax) = Tableau(z, imax + 1)
                       Tableau(z, imax + 1) = Cible
                   Next
                   Valeur = 1
     
            Next
        Next
     
        For r = 1 To imax
            liste = liste & vbCrLf & r & "       	 " & Tableau(1, r) & "		" & Tableau(2, r) & "        " & Tableau(0, r) 
        Next
        liste = vbCrLf& "N°             Nom du fichier		Type       Modèle" &vbCrLf& liste    
        ShowFolderList = liste
     
    Set Ftxt = FSO.createTextFile(".\repertoire\liste.txt",true)
    Ftxt.writeline (liste)
    Ftxt.Close
    End Function
    attention j'ai modifié le répertoire de ton fichier liste.txt
    l'accès à des documents créés par openoffice enregistrés au format word provoque une erreur...
    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

  16. #16
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Merci Omen =), je vais tester sur mon pc et je vous quoi apres. En tout cas merci

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Super je viens de tester , un grand merci a vous 2 Omen et Cedric, En plus grace a vous j'ai pu apprendre quelques petites choses en plus ce qui fait de moi un Quasi-Debutant +1 :p. Allez See you

  18. #18
    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
    pas de quoi, entre invités il faut se serrer les coudes
    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

  19. #19
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Voila désolé de réouvrir ce topique mais j'ai quelques soucis avec mon script .
    En effet, il a fonctionné chez moi sur mon os qui est un XP et quand j'ai voulu le tester au bureau (NT), il m'affiche le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Un composant ActiveX ne peut pas créer un objet: ...."
    Je rappel que j'utilise la dsofile ^^ et que ce script fonctionnait tres bien avant.
    Merci pour vos futurs reponses.

  20. #20
    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
    Citation Envoyé par omen999
    pour ton erreur, c'est tout simple: tu n'as pas enregistré ton composant activex dans le base de registre (c'est rappelé dans le source de l'exemple)
    même cause, même effet...
    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

Discussions similaires

  1. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  2. Réponses: 13
    Dernier message: 26/08/2005, 16h34
  3. importation d'un fonction d'une dll dans mon application
    Par jeannot27 dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/07/2005, 15h35
  4. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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