Comment récupérer des propriétés avec BuiltinDocumentProperties [VBA] - VB/VBA/VBS - Programmation
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
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
Marsh Posté le 04-08-2009 à 21:28:37
Re,et pourtant
|
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."
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 :
|
marche très bien
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 ???
Marsh Posté le 05-08-2009 à 16:42:31
Salut, j'ai modifé le code en ajoutant
un On Error Resume Next |
|
Pour un fichier vierge j'obtiens ceci
|
Marsh Posté le 05-08-2009 à 18:14:33
oups désolé j'avais pas compris ton problème
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
par contre la date de sauvegarde est correcte
En fait c'est les propriétés windows qui merde
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
pourtant je n'ai ni enregistré ni modifié quoique ce soit
- je ferme sans sauvegarder
windows réindique 13h55
Esct ce que cela correspond à-t-on problème?
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...
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.
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
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
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