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 :

récupérer la propriété 'subject' d'un document office [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    HSE
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : HSE

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 5
    Points
    5
    Par défaut récupérer la propriété 'subject' d'un document office
    Bonjour,

    Dans une base ACCESS, depuis un formulaire je lance Word et créé un document à partir d'un modèle. Dans ce document j'affecte certaines valeurs(renseignées dans le formulaire) à des signets (Référence, description...) dans mon entête, et j'affecte à la propriété "Subject" du document la même valeur que mon champ [Description].
    Ca fonctionne très bien.

    Une fonction me permet de récupérer la liste complète des documents d'un répertoire et de stocker dans une table (T_AllDocs) le nom des documents.
    Ca marche aussi.

    Dans cette même table, dans un champ [sujet] je voudrais aussi stocker le contenu de la propriété "Subject" des documents.
    Mais là..... Je sèche.

    Quelqu'un aurait-il une solution ?

    Merci d'avance

  2. #2
    Inactif  

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

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

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

    Citation Envoyé par dominicfr Voir le message
    Bonjour,

    Dans cette même table, dans un champ [sujet] je voudrais aussi stocker le contenu de la propriété "Subject" des documents.
    Mais là..... Je sèche.

    Quelqu'un aurait-il une solution ?

    Merci d'avance
    Je n'ai pas Access mais quelques pistes:

    D'une manière générale, tu dois regarder les "BuiltInDocumentProperties" du fichier.

    Tu peux aussi essayer avec DSOFile chez Microsoft. La dernière version de la dll supporte les versions Office 2007 et +

    http://support.microsoft.com/kb/224351/fr

    Il y a un lien de téléchargement dans la page.

    Et ce tutoriel de SilkyRoad

    http://silkyroad.developpez.com/VBA/...etesClasseurs/

    Pour les Versions 2007 et +, on peut aussi utiliser le SDK OpenXML et VB.net (La version Express est gratuite)

    http://msdn.microsoft.com/fr-fr/libr...ffice.15).aspx

    Le lien de téléchargement du SDK est dans l'article. Le SDK inclue la "fameuse" DocumentFormatOpenXML.dll

    Si cela peut intéresser quelqu'un, je pourrais mettre à quelque part, une ébauche d'application VB.net qui affiche les propriétés des fichiers Office. Je pensais l'ajouter aux sources du site, mais elle n'est pas terminée, bien qu'elle soit fonctionnelle. (Il manque les commentaires et quelques autres gugusses; mais la partie "lecture des propriétés" est pratiquement complétée.)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    HSE
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : HSE

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,



    Je n'ai pas Access mais quelques pistes:

    D'une manière générale, tu dois regarder les "BuiltInDocumentProperties" du fichier.

    Tu peux aussi essayer avec DSOFile chez Microsoft. La dernière version de la dll supporte les versions Office 2007 et +

    http://support.microsoft.com/kb/224351/fr

    Il y a un lien de téléchargement dans la page.

    Et ce tutoriel de SilkyRoad

    http://silkyroad.developpez.com/VBA/...etesClasseurs/

    Pour les Versions 2007 et +, on peut aussi utiliser le SDK OpenXML et VB.net (La version Express est gratuite)

    http://msdn.microsoft.com/fr-fr/libr...ffice.15).aspx

    Le lien de téléchargement du SDK est dans l'article. Le SDK inclue la "fameuse" DocumentFormatOpenXML.dll

    Si cela peut intéresser quelqu'un, je pourrais mettre à quelque part, une ébauche d'application VB.net qui affiche les propriétés des fichiers Office. Je pensais l'ajouter aux sources du site, mais elle n'est pas terminée, bien qu'elle soit fonctionnelle. (Il manque les commentaires et quelques autres gugusses; mais la partie "lecture des propriétés" est pratiquement complétée.)
    Bonjour Clément.

    Impeccable, j'ai pu intégrer la partie DSO dans la boucle qui va me chercher les documents, et donc récupérer la propriété "sujet".
    J'en profite pour remercier tous les contributeurs de ce forum, je n'y connais presque rien mais grâce à vos connaissances, je parviens à faire des trucs sympas. C'est super.

    Si ça peut aider quelqu'un, voici un morceau de code qui permet de créer une table registre des documents d'un répertoire (sous rep inclus) et d'y stocker pour moi: le chemin complet (qui me sert de nom), deux parties de ce chemin dont j'ai besoin ensuite, et la propriété "sujet".

    ' ---
    ' LISTE DU CONTENU D'UN DOSSIER VERS UNE TABLE
    ' sources le grenier access
    ' et developpez.com
    ' ---
    '
    Sub ListerFichiers( _
    ByVal strDossier As String, _
    Optional ByVal strExtension As String = "*.*", _
    Optional blnViderTable As Boolean = False, _
    Optional blnCheminComplet As Boolean = True)

    ' Quelques variables...
    Dim strFichier As String
    Dim rst As DAO.Recordset
    Dim varSousDossiers As Variant
    Dim intI As Integer
    Dim DSO As DSOFile.OleDocumentProperties



    ' Nom de la table et du champ
    Const TABLE_FICHIERS = "T_AllDocs"
    Const CHAMP_FICHIER = "Location of document"

    ' Vérifier que le dossier existe bien
    strDossier = AddBackslash(strDossier)
    If Dir(strDossier, vbDirectory) = "" Then
    MsgBox "Directory Not Found !", vbExclamation
    Exit Sub
    End If

    ' Vider la table si nécessaire
    If blnViderTable Then
    CurrentDb.Execute "DELETE FROM [" & TABLE_FICHIERS & "];"
    End If

    ' Ouvrir la table
    Set rst = CurrentDb.OpenRecordset(TABLE_FICHIERS, dbOpenDynaset)

    ' Lister tous les fichiers du dossier
    DoEvents
    strDossier = AddBackslash(strDossier)
    strFichier = Dir(strDossier & strExtension, vbNormal)
    While strFichier <> ""
    Set DSO = New DSOFile.OleDocumentProperties 'Nécessite d'activer la référence DSO OleDocument Properties Reader 2.0 (http://support.microsoft.com/default...;EN-US;Q224351)
    DSO.Open sfilename:=strDossier & strFichier
    ' Stocker le nom du fichier dans la table
    rst.AddNew
    rst(CHAMP_FICHIER) = IIf(blnCheminComplet, _
    strDossier & strFichier, _
    strFichier)
    rst("Subdivision") = Mid(strFichier, 12, 4) 'prend la partie du nom de fichier qui définit son type et stocke dans Subdivision
    rst("Number") = Val(Mid(strFichier, 17, 4)) 'prend la partie du nom de fichier qui définit son numéro d ordre et stocke dans Number
    rst("Description") = DSO.SummaryProperties.Subject 'récupère la propeiéte Sujet du fichier et la stocke dans Description
    rst.Update

    ' Lire le fichier suivant
    strFichier = Dir
    Wend

    ' Trouver les sous-dossiers éventuels
    varSousDossiers = ListerSousDossiers(strDossier)

    ' S'il y a des sous-dossiers, les parcourir aussi récursivement
    If (UBound(varSousDossiers) > 0) Then
    ' Traiter les sous-dossiers
    For intI = 1 To UBound(varSousDossiers)
    ListerFichiersRecDetail rst, varSousDossiers(intI), strExtension, blnCheminComplet
    Next
    End If

    ' On libère les ressources
    rst.Close
    Set rst = Nothing
    End Sub

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

Discussions similaires

  1. [SBI] Comment récupérer un document Office
    Par LaPanic dans le forum SpagoBI
    Réponses: 1
    Dernier message: 30/01/2014, 16h13
  2. Réponses: 2
    Dernier message: 01/02/2012, 10h59
  3. Modifier les propriétés des documents office
    Par justgreat dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 02/05/2010, 15h31
  4. Récupérer les propriétés d'un document
    Par M.L.G. dans le forum Général Python
    Réponses: 2
    Dernier message: 16/06/2008, 12h09
  5. [FPDF] récupérer les propriétés d'un document pdf
    Par kitch18 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/02/2008, 12h04

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