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

Macros et VBA Excel Discussion :

Extraire les métas de plusieurs milliers de PDF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut Extraire les métas de plusieurs milliers de PDF
    Bonjour,
    Je suis archi débutant en VBA pour ne pas dire niveau 0. Hors j'ai une situation qui pourrait être solutionnée en quelques lignes de VBA donc je m'en remets à vos connaissances.

    - Je dispose de plus de 1000 PDF dans un dossier
    - Chacun de ses PDF a dans ses métas les champs "Author" et "Title" renseignés
    - Mon but est de répertorier sur un fichier excel 3 colonnes avec :
    1- Titre
    2- Auteur
    3- Nom du fichier (ex. "fichier2.pdf")

    Si quelqu'un avait l'amabilité de m'aider ça m'eviterait de passer de nombreuses heures à faire cela à la main

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Bon bah pas d'aide pour le moment. J'ai fouillé le forum pour tomber sur ce code intéressant qui me permet de lister sur excel les fichiers d'un repertoire avec quelques unes de leur propriété. Il ne me manque plus qu'à trouver les bons noms/bonnes commandes pour accéder au champ "title" et "author" du pdf.

    Merci pour votre aide

    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
    Sub CréerListeFichier()
    
        'déclaration des variables
        Dim monFSO, monDossier
        Dim repertoireGED As String
    
        'initialisation
        repertoireGED = "C:\XXXX"
        row = 2
        Set monFSO = CreateObject("Scripting.FileSystemObject")
        Set monDossier = monFSO.GetFolder(repertoireGED)
    
        ListerFichiers monDossier
    
        Set monDossier = Nothing
        Set monFSO = Nothing
    
    End Sub
    
    Private Sub ListerFichiers(ByVal dossier)
    
        For Each Fichier In dossier.Files
            Cells(row, 2).Select
            Selection.Value = Fichier.Name
            Cells(row, 3).Select
            Selection.Value = Fichier.Path
            row = row + 1
        Next
        For Each sousdossier In dossier.SubFolders
            ListerFichiers sousdossier
        Next
        
    End Sub

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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
    'Nécessite d'activer la référence: Microsoft Shell Controls and Automation
    Sub ListPropPDF()
    Dim Shl As Shell32.Shell
    Dim Fich As Shell32.FolderItem
    Dim Doss As Shell32.Folder
    Dim Chemin As String, Tbl() As String
    Dim i As Integer
     
    Chemin = "C:\Users\user\Desktop\MonDossier\"               'Chemin du dossier contenant les pdf
    ReDim Tbl(1 To 3, 1 To 1)
    Tbl(1, 1) = "Fichier": Tbl(2, 1) = "Auteur": Tbl(3, 1) = "Titre": i = 1
    Set Shl = CreateObject("Shell.Application")
    Set Doss = Shl.Namespace(Chemin)
    With Doss
        For Each Fich In .Items
            If Not Fich.isFolder Then                          'Si l'élément n'est pas un dossier
                If Right(Fich, 4) = ".pdf" Then                'Si l'extension des fichier est .pdf
                    i = i + 1
                    ReDim Preserve Tbl(1 To 3, 1 To i)
                    Tbl(1, i) = Fich                           'Nom Fichier
                    Tbl(2, i) = .GetDetailsOf(Fich, 10)         'Auteur
                    Tbl(3, i) = .GetDetailsOf(Fich, 9)        'Titre
                End If
            End If
        Next Fich
    End With
    Sheets("Feuil2").Range("A1:C" & UBound(Tbl, 2)) = Application.Transpose(Tbl)
    Set Shl = Nothing
    Set Doss = Nothing
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Merci beaucoup pour ce code.
    J'ai néanmoins un problème, il ne restitue pas les bons champs.

    Les champs que je voudrais récupérer sont ceux qu'on obtient en faisant un clic droit sur le fichier puis propriétés et ensuite dans l'onglet "PDF" les champs : "Title" et "Author".

    Je regarde sur internet si je peux trouver les bons éléments à appeller.

    Si jamais vous voyez ce que je recherche je suis preneur.

    Merci pour tout.

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,le code fourni par Mercatog renvoie bien les infos demandées
    sinon pour getDetailsOf voir http://silkyroad.developpez.com/VBA/...asseurs/#LIV-C
    qui renvoie au lien TechNet http://technet.microsoft.com/fr-fr/l...15(en-us).aspx

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Salut,
    J'ai donc un problème, car les propriétés auxquels je souhaite accéder ne semblent pas pouvoir être extraite via Getdetailsof.

    Pour faire très clair, le code plus haut me restitue les propriétés que l'on trouve dans l'onglet "details" des propriétés, alors que moi j'essaye d'atteindre les propriétés que l'on retrouve dans l'onglet "PDF" des propriétés.

    Sauriez vous comment faire?

  7. #7
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    bis repetita placent
    le code fourni par Mercatog renvoie bien les infos demandées
    sinon pour getDetailsOf voir http://silkyroad.developpez.com/VBA/...asseurs/#LIV-C
    qui renvoie au lien TechNet http://technet.microsoft.com/fr-fr/l...15(en-us).aspx

Discussions similaires

  1. [WD5.5] extraire les paramètres d'un .pdf
    Par lubinfo dans le forum WinDev
    Réponses: 0
    Dernier message: 13/09/2013, 17h16
  2. Extraire les données de plusieurs tables [Talend-Java]
    Par ADBows dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/08/2011, 00h53
  3. Réponses: 1
    Dernier message: 15/12/2008, 19h50
  4. [DOM] Extraire les variables de plusieurs listes déroulantes
    Par L'aigle de Carthage dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 07/04/2008, 09h25
  5. Réponses: 4
    Dernier message: 02/04/2008, 14h27

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