trouver les mots clé de fichiers excel

gosselien

XLDnaute Barbatruc
Bonjour à tous,

dans Windows, il est possible - tout comme dans Excel - de mettre des mots clés, ce qui je fais depuis un moment et qui me facilite les recherches dans une longue liste de fichier exemples excel.
Je n'ai trouvé nulle part comment récupérer ces mots clés pour venir les coller dans une liste de noms de fichiers-date création-modification, chemin etc etc....

Ceci est peut être possible dans un autre langage que le vba mais impossible de trouver ça ...

Merci de me dire si quelqu'un ici a trouvé ça quelque part :)

P.
 

david84

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Bonjour,
peux-tu développer parce que là j'ai du mal à cerner ta demande.
Donne un exemple concret pour que l'on puisse comprendre.
A+
 

gosselien

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

OK...

dans un classeur Excel (2007 et au delà je suppose), si tu vas dans le menu Office/Préparer/propriétés, tu as la possibilité de mettre des mots clés qui concernent ce classeur; ces mots clés peuvent être lus ou encodés depuis l'exploreur de windows7 et lors d'une recherche, je mets un de ces mots et les fichiers qui ont ce mot clé apparaissent; à présent j'ai un code qui liste tous mes fichiers excel d'un répertoire donnés avec les infos citées au post#1 mais j'aurais voulu avoir aussi les mots clés qui sont attachés à chacun de ces fichiers...
Je pense que ça ne sera pas en VBA que je trouverai mais sait on jamais :)

P.
 

job75

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Bonsoir gosselien, hello David,

Pas sûr d'avoir compris la demande, mais pour lister les attributs d'un fichier :

Code:
Sub ListeAttributs()
Dim a As DocumentProperty, i As Byte
For Each a In ThisWorkbook.BuiltinDocumentProperties
  i = i + 1
  Cells(i, 1) = a.Name
Next
End Sub
Bonne soirée.
 

job75

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Re,

Pour avoir aussi les valeurs des attributs :

Code:
Sub ListeAttributs()
Dim a As DocumentProperty, i As Byte
On Error Resume Next
For Each a In ThisWorkbook.BuiltinDocumentProperties
  i = i + 1
  Cells(i, 1) = a.Name
  Cells(i, 2) = "Erreur..."
  Cells(i, 2) = a.Value
Next
End Sub
A+
 

gosselien

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Ca semble avancer ....:D

Dans le code de JOB75, la 4eme ligne donne KEYWORDS et c'est probablement là que se trouvent les mots que je cherche.
Comment lister tout ça pour un fichier ou une série de fichier alors ?
 

job75

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Re,

On peut paramétrer la macro avec une variable objet :

Code:
Sub ListeAttributs(wb As Workbook)
'---
For Each a In wb.BuiltinDocumentProperties
'---
On l'appelle quand on veut, dans une boucle si l'on veut étudier les fichiers d'un dossier.

A+
 

david84

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Bonjour, salut Gérard,
Pourquoi faire si ton but est de trouver les mots clés ? L'utilisation de la propriété Keyword suffit non ?
Tu peux même modifier ces mots clés donc quel intérêt de charger cette dll dans ton cas (à part le fait éventuellement de vouloir absolument travailler sur des classeurs fermés) ?
A+
 
Dernière édition:

gosselien

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Bonjour David84, le forum,

oups.....

oui je peux ainsi avoir les info keywords sur des fichiers fermés , ce qui évite d'ouvrir un tas de classeurs et avec le code de Job ces mêmes keywords avec le fichier ouvert.

Bon , en fait je n'y arrive pas:
je voudrais juste avoir dans un MSGBOX les keywords du fichier ouvert ...


Merci
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

A toi de voir mais tu n'as en fait qu'un seul classeur ouvert en plus du classeur actif puisque tu le refermes à la fin du traitement dans ta boucle avant d'ouvrir, traiter puis refermer le suivant, etc. donc cela ne se voit même pas.

Sinon comme je vois qu'il y a des versions obsolètes j'aimerais savoir quelle version du DSOFile as-tu téléchargé puisque je vois que tu es sous Excel 2007 ?
L'as testé de ton côté ?

A+
 

gosselien

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

J'ai chargé DSO OLE document properties reader 2.1, c'est donc avec ça que je peux lire les keywords sur une liste de fichiers fermé, mais je cherche aussi (voir mon msg précédant, à avoir les keywords du fichier ouvert sur lequel je travaille dans une msgbox, et ça je n'y arrive pas)
 

david84

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Pourtant Gérard t'a expliqué comment faire. Il suffit juste d'adapter :
Code:
Sub Test()    
infosClasseurBuiltinDocumentProperties ActiveWorkbook, "Keywords"
End Sub

Sub infosClasseurBuiltinDocumentProperties(Wb As Workbook, Propriété As String)
    MsgBox Wb.BuiltinDocumentProperties.Item(Propriété).Value
End Sub
J'ai chargé DSO OLE document properties reader 2.1, c'est donc avec ça que je peux lire les keywords sur une liste de fichiers fermé
Poste un exemple de code qui fonctionne chez toi que je puisse tester pour voir.

A+
 

gosselien

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

Bon, entretemps, j'ai lu l'aide :)
j'ai donc les keywords du fichier actuellement ouvert comme ceci:

Sub Prop()
MsgBox (ThisWorkbook.BuiltinDocumentProperties.Item(4))
End Sub

et pour les fermés:

' Lire et modifier les propriétés des classeurs et autres fichiers
Sub LireProprietesClasseur_DSO()
'Nécessite d'activer la référence DSO OleDocument Properties Reader 2.0
'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351
Dim DSO As DSOFile.OleDocumentProperties
Set DSO = New DSOFile.OleDocumentProperties
'Attention: Le fichier doit être préalablement fermé!
On Error Resume Next
For Each mfile In Range("A2:A" & [A65000].End(xlUp).Row)
Chemin = "C:\Users\Pat\Documents\Fichiers excel\"
DSO.Open Chemin & mfile
' Last = Range("B65000").End(xlUp).Row
lig = [H65000].End(xlUp).Row + 1
'MsgBox DSO.SummaryProperties.Author & vbLf & DSO.SummaryProperties.Comments & _
DSO.SummaryProperties.Keywords
'
'Les autres propriétés:
' Cells(lig, 5) = DSO.SummaryProperties.DateCreated
' Cells(lig, 6) = DSO.SummaryProperties.DateLastPrinted
' Cells(lig, 7) = DSO.SummaryProperties.DateLastSaved
Cells(lig, 8) = DSO.SummaryProperties.Keywords
Cells(lig, 9) = mfile
DSO.Close
Next
End Sub
 

david84

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

J'ai testé vite fait sur une version 2007 et l'objet semble fonctionnel.
Deux points cependant concernant ton exemple :

- placer le chemin du ficher dans la boucle For...Each ne me semble pas la meilleur solution : mieux vaut utiliser une autre Sub dans laquelle tu placerais des arguments comme je l'ai proposé.

- si je comprends bien le code que tu as fourni : tu ouvres le fichier
Code:
DSO.Open
et tu le fermes après traitement
Code:
DSO.Close
donc je ne vois pas trop la différence avec l'utilisation de la propriété BuiltinDocumentProperties sur ce point précis puisque là aussi le fichier doit être ouvert pour être exploité.

A+
 

gosselien

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

J'ai testé vite fait sur une version 2007 et l'objet semble fonctionnel.
Deux points cependant concernant ton exemple :

- placer le chemin du ficher dans la boucle For...Each ne me semble pas la meilleur solution : mieux vaut utiliser une autre Sub dans laquelle tu placerais des arguments comme je l'ai proposé.

- si je comprends bien le code que tu as fourni : tu ouvres le fichier
Code:
DSO.Open
et tu le fermes après traitement
Code:
DSO.Close
donc je ne vois pas trop la différence avec l'utilisation de la propriété BuiltinDocumentProperties sur ce point précis puisque là aussi le fichier doit être ouvert pour être exploité.

A+
J'ai 200/300 fichiers XL dont une partie avec des mots clés que j'ai mis pour savoir de quoi il traitent (dictionnaire; sommeprod décaler etc..) tout simplement parce que je ne vais pas refaire un exemple qui est déjà en archive et surtout que je ne suis pas capable parfois de pondre une formule comme certains ici qui font ça les doigts dans le nez :)

Quand je fais un exemple ou que je trouve (et c'est souvent ici) des réponses qui pourraient me servir par la suite, je mets des mots clés à ce fichier mais sur autant de fichiers je ne vais pas les ouvrir tous (à l'écran) pour voir ce dont ça traite, donc j'ai listé tous les fichiers de mon répertoire dans un onglet et ceux qui n'ont pas de mots clé, je vais alors les ouvrir pour en mettre ou pour supprimer ce fichier qui ne m'apporte rien.
Je mets donc , désormais, des mots clés à mes propres fichiers et j'ai ainsi une liste dans un classeur avec tous les noms de workbook et les clés.
Dans un menu perso, à présent, je sais voir rapidement s'il en possède ou pas, auquel cas j'ajoute les mots clés en passant par le menu Office...
C'est plus clair j'espère ...

@+
P.
 

david84

XLDnaute Barbatruc
Re : trouver les mots clé de fichiers excel

C'est plus clair j'espère ...
Mais c'était déjà clair !
Je faisais simplement remarquer que cet objet a tout de même besoin d'ouvrir le fichier (DSo_Open) pour en extraire les informations, même si effectivement cela ne se voit pas puisque le fichier n'est pas affiché...du moins c'est ce que j'en déduis. Or c'est bizarre car il est précisé dans certains articles que DSO File permet de récupérer les informations d'un fichier fermé...mais est-ce bien le cas ?

J'ai l'impression que le véritable "plus" de cet objet est lorsque tu veux récupérer des informations sur des fichiers Excel sans passer par Excel.
Le support technique Microsoft précise d'ailleurs "Dsofile.dll vous permet de modifier les propriétés d'un document Office sans Office dans Visual Basic .NET".

Bon bien sûr je pense aussi que le traitement est plus rapide mais si l'on compare les informations que tu peux récupérer avec cet objet par rapport aux informations que tu peux récupérer via la propriété BuiltinDocumentProperties a priori je n'ai pas l'impression que cela soit différent.
Mais je n'ai pas assez testé pour l'affirmer.

A+
 

Discussions similaires


Haut Bas