[VBA] Comment récupérer des propriétés avec BuiltinDocumentProperties

Comment récupérer des propriétés avec BuiltinDocumentProperties [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 04-08-2009 à 12:56:14    

Bonjour,
 
J'ai un code vba qui ouvre un fichier, récupère certaine infos/propriétés tel que :
- la dernière date de sauvegarde d'un fichier excel ouvert
- la date de creation du fichier  
- le dernier auteur du fichier modifié
et ensuite referme le fichier et passe au suivant
 
 

Spoiler :

For i = 1 To nbLigne
        With ThisWorkbook.Worksheets(1)
                            ' se placer sur la cellule 1 du fichier
                            .Range("D" & i + 4).Select
                            ' recuperer le nom du path+filename
                            CheminFichier = Selection.Cells(i + 4, 1).Value
                            ' ouvrir le fichier
                            Set ClasseurEnCours = Workbooks.Open(CheminFichier)
                            ' recuperer la last save date
                            LastSaveDate = ClasseurEnCours.BuiltinDocumentProperties("Date Modified" ).Value
                            LastAuthor = ClasseurEnCours.BuiltinDocumentProperties("Last Author" ).Value
                            DateCreated = ClasseurEnCours.BuiltinDocumentProperties("Creation Date" ).Value
                             
                            ' ecrire dans la colonne 7 (G), la last save date
                            ' .Range("G" & i + 4).Select
                            .Cells(i + 4, 7) = LastSaveDate
                            .Cells(i + 4, 8) = LastAuthor
                            .Cells(i + 4, 9) = DateCreated
                             
                            ' fermer le fichier
                            ClasseurEnCours.Close SaveChanges:=False
                            ' ligne suivante
        End With
Next


 
 
mon problème est qu'à part récupérer le "Last Author" correctement, il ne fonctionne pas sur le reste.
Je m'explique, je veux récupérer la last save date (ou appelez ça comme vous voulez) c'est à dire la dernière fois que le fichier a été ouvert, puis sauvegardez., et bien lorsque je check la date et l'heure que me retourne mon code, avec ce que je vois dans "clic droit/propriétés/summary" pour voir si les dates correspondent... résultat les dates sont différentes
Pareil sur la date de creation du fichier.
 
Vous avez une idée de l'erreur et surtout avez vous la liste de toute les propriétés utilisés par BuiltinDocumentProperties("ici" )?


Message édité par replay le 04-08-2009 à 12:56:59
Reply

Marsh Posté le 04-08-2009 à 12:56:14   

Reply

Marsh Posté le 04-08-2009 à 15:53:41    

Salut, voir http://cjoint.com/?iep0qol5Gi si cela peut t'aider
ainsi que http://msdn.microsoft.com/fr-fr/li [...] S.80).aspx


Message édité par kiki29 le 04-08-2009 à 16:10:47
Reply

Marsh Posté le 04-08-2009 à 18:08:37    

j'ai pas accès au premier lien du boulot, je verrais at home
 
par contre pour le second, je connaissais deja et malheuresement il ne t'indique pas du tout quoi remplir dans la parenthese de BuiltinDocumentProperties....
je vais quand meme pas les deviner tous, meme si certain sont intuitifs
 
merci kiki29


Message édité par replay le 04-08-2009 à 18:09:03
Reply

Marsh Posté le 04-08-2009 à 21:28:37    

Re,et pourtant


Dim DocProp As DocumentProperty
Dim i As Integer
 
    For Each DocProp In ThisWorkbook.BuiltinDocumentProperties
        i = i + 1
        ThisWorkbook.Worksheets(1).Cells(i, 1) = DocProp.Name
        ThisWorkbook.Worksheets(1).Cells(i, 2) = DocProp.Value
    Next DocProp
 


Message édité par kiki29 le 04-08-2009 à 21:29:19
Reply

Marsh Posté le 05-08-2009 à 12:25:01    

d'accord si je reprend ton code pour avoir la last save time (date+heure)
 
je dois remplacer une de tes lignes par:
 
ThisWorkbook.Worksheets(1).Cells(i, 1) = DocProp.LastSaveTime ????
 
concrètement ce qu'il me manque c'est le nom de variable à récupérer et c'est cela que je désirerais connaitre, ce qui se place juste apres "DocProp."

Reply

Marsh Posté le 05-08-2009 à 13:50:03    

Salut  

Citation :

Cette propriété retourne la collection intégrale des propriétés de document intégrées. Utilisez la propriété Microsoft.Office.Core.DocumentProperties.Item(System.Object) pour retourner un membre unique de la collection (un objet Microsoft.Office.Core.DocumentProperty) en spécifiant le nom de la propriété ou l'index de la collection (sous forme de nombre).


Dans le pire des cas tu peux tenter les index au hasard ^^
un petit de msgbox à chaque fois pour voir ;)
je regarde si je trouve d'autre source ;)
 
Edit:
bon 5 min de recherche et merci google

Code :
  1. MsgBox ActiveWorkbook.BuiltinDocumentProperties("Creation Date" ).Value
  2. MsgBox ActiveWorkbook.BuiltinDocumentProperties("Last Save Time" ).Value
  3. MsgBox ActiveWorkbook.BuiltinDocumentProperties("Last Author" ).Value


marche très bien ;)


Message édité par _xme_ le 05-08-2009 à 13:56:48
Reply

Marsh Posté le 05-08-2009 à 16:27:13    

merci _xme_,
 
cependant c'est (quasi) exactement ce que j'avais déjà mais le soucis de mon côté c'est que j'aimerais surtout savoir pourquoi la "last save time" que me pond le vba et celle des propriétés du fichier sont différentes ???

Reply

Marsh Posté le 05-08-2009 à 16:42:31    

Salut, j'ai modifé le code en ajoutant

un On Error Resume Next



Option Explicit
 
Sub tst()
Dim DocProp As DocumentProperty
Dim i As Integer
    On Error Resume Next
    For Each DocProp In ThisWorkbook.BuiltinDocumentProperties
        i = i + 1
        ThisWorkbook.Worksheets(1).Cells(i, 1) = DocProp.Name
        ThisWorkbook.Worksheets(1).Cells(i, 2) = DocProp.Value
    Next DocProp
End Sub


 
Pour un fichier vierge j'obtiens ceci


Title  
Subject  
Author Kiki
Keywords  
Comments  
Template  
Last author Kiki
Revision number  
Application name Microsoft Excel
Last print date  
Creation date 05/08/2009 16:35
Last save time 05/08/2009 16:37
Total editing time  
Number of pages  
Number of words  
Number of characters  
Security 0
Category  
Format  
Manager  
Company  
Number of bytes  
Number of lines  
Number of paragraphs  
Number of slides  
Number of notes  
Number of hidden Slides  
Number of multimedia clips  
Hyperlink base  
Number of characters (with spaces)  


Message édité par kiki29 le 05-08-2009 à 16:43:23
Reply

Marsh Posté le 05-08-2009 à 18:14:33    

oups désolé j'avais pas compris ton problème  :sweat:  
ainsi le Last Save Time est différent  :??:  
je regarde chez moi 2sec
 
re  
a priori chez moi sous excel 2000
la date de création est fausse , ca me dit un excel qui daterai de 1996  :lol:  
 
par contre la date de sauvegarde est correcte
En fait c'est les propriétés windows qui merde :D
 
Je viens de faire quelques tests et voici le résultat:
je prends un fichier test.xls enregistré aux alentour de 13h55
windows me l'indique correctement
- je l'ouvre
windows m'indique l'heure actuelle  :lol:  
pourtant je n'ai ni enregistré ni modifié quoique ce soit
- je ferme sans sauvegarder
windows réindique 13h55  :lol:  
 
Esct ce que cela correspond à-t-on problème?

Reply

Marsh Posté le 06-08-2009 à 12:05:27    

oui plus ou moins,  
 
mais dans tes deux indications est ce que la premier et la seconde correspondent respectivement à l'heure de creation et l'heure de sauvegarde (sans modification sans sauvegarde) ou seulement à deux (non) sauvegarde consécutive ?
 
pour ta date de creation à 1996, il me fait la même chose pour 1996 alors que je l'ai créé quelques semaines auparavant !
du coup comment régler cela sachant que le resultat du vba est faux mais celui de windows est bon...  :heink:  
 
 
merci kiki29, c'est exactement ce que je recherchais, la liste des propriétés.
 
il me reste un dernier probleme dans mon code, il arrete à la 30 ième ligne de m'afficher la "last save date" alors qu'il le fait très bien pendant les 30 premieres
je rappel que la liste des fichiers en contient 325 à peu pres.
 
je ne comprends pas pourquoi il s'arrete au 30eme, j'ai l'impression que le "répertoire du fichier+le nom du fichier" sont beaucoup trop long pour la taille d'un string en mémoire, même si j'en doute, je ne vois que cela.


Message édité par replay le 06-08-2009 à 12:07:10
Reply

Marsh Posté le 06-08-2009 à 12:05:27   

Reply

Marsh Posté le 06-08-2009 à 12:22:27    

salut  
J'ai pas très bien compris...
Chez moi la date de création bug de A à Z et comme ça je ne connais aucun moyen de corriger ce bug
A regarder si c'est un bug connu
Ce que j'ai décris après c'est les changements de la date de modification de windows.
Qui au lieu d'être une date de dernière sauvegarde et une date bizarre.
Dans l'explorateur windows, si le fichier excel n'est pas ouvert la date indiqué est la date de la dernière sauvegarde.
Si par contre le fichier est ouvert c'est la date d'ouverture qui est affiché
bonne chance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed