Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Propriétés d'un fichier

10 réponses
Avatar
Joëlle B
Bonjour,
J’ai besoin d’aide pour trouver comment lire des propriétés personnalisées
d’un document non ouvert. Je ne peux pas ouvrir les documents car sous les
répertoires il y a des fichiers PowerPoint, des fichiers Word et des fichiers
Excel.
J’ai trouvé la possibilité de lire quelques propriétés prédéfinies :
Sub AfficheInfoAccesFichier2()
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = f.Name & vbCrLf
s = s & "Créée le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified & vbCrLf
s = s & "type :" & f.Type
MsgBox s, 0, "Infos d'accès au fichier"
End Sub
Mais impossible de trouver le code pour les propriétés personnalisées !

Je pourrais m’en sortir si je savais lire de la même façon le nom du modèle,
qui est une propriété prédéfinie.

Merci à tous.

10 réponses

Avatar
Daniel.C
Bonjour.
Regarde l'aide VBA sur :
CustomDocumentProperties
Cordialement.
Daniel

Bonjour,
J’ai besoin d’aide pour trouver comment lire des propriétés personnalisées
d’un document non ouvert. Je ne peux pas ouvrir les documents car sous les
répertoires il y a des fichiers PowerPoint, des fichiers Word et des fichiers
Excel.
J’ai trouvé la possibilité de lire quelques propriétés prédéfinies :
Sub AfficheInfoAccesFichier2()
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = f.Name & vbCrLf
s = s & "Créée le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified & vbCrLf
s = s & "type :" & f.Type
MsgBox s, 0, "Infos d'accès au fichier"
End Sub
Mais impossible de trouver le code pour les propriétés personnalisées !

Je pourrais m’en sortir si je savais lire de la même façon le nom du modèle,
qui est une propriété prédéfinie.

Merci à tous.


Avatar
isabelle
bonjour Joëlle,

extrait de : http://silkyroad.developpez.com/VBA/ProprietesClasseurs/

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é!
DSO.Open sfilename:="C:zazazz1.xls"
MsgBox DSO.SummaryProperties.Author & vbLf &
DSO.SummaryProperties.Comments
'
'Les autres propriétés:
'
' ApplicationName ' Author ' ByteCount ' Category ' CharacterCount
' CharacterCountWithSpaces ' Comments ' Company ' DateCreated
' DateLastPrinted ' DateLastSaved ' HiddenSlideCount
' Keywords ' LastSavedBy ' LineCount ' Manager ' MultimediaClipCount
' NoteCount ' PageCount ' ParagraphCount ' PresentationFormat
' RevisionNumber ' SharedDocument ' SlideCount
' Subject ' Template ' Title ' TotalEditTime ' Version ' WordCount
'
DSO.Close
End Sub

isabelle

Joëlle B a écrit :
Bonjour,
J’ai besoin d’aide pour trouver comment lire des propriétés personnalisées
d’un document non ouvert. Je ne peux pas ouvrir les documents car sous les
répertoires il y a des fichiers PowerPoint, des fichiers Word et des fichiers
Excel.
J’ai trouvé la possibilité de lire quelques propriétés prédéfinies :
Sub AfficheInfoAccesFichier2()
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = f.Name & vbCrLf
s = s & "Créée le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified & vbCrLf
s = s & "type :" & f.Type
MsgBox s, 0, "Infos d'accès au fichier"
End Sub
Mais impossible de trouver le code pour les propriétés personnalisées !

Je pourrais m’en sortir si je savais lire de la même façon le nom du modèle,
qui est une propriété prédéfinie.

Merci à tous.




Avatar
Joëlle B
Merci pour vos réponses:
Daniel : CustomDocumentProperties ne s'utilise que sur un document ouvert

Isabelle : j'avais trouvé la solution sur developpez.com
mais l'adresse microsoft n'existe plus et je n'ais pas cette bibliothèque en
référence

dur dur

Encore une fois merci m'avoir consacré un peu de temps.
Avatar
Daniel.C
Ouvre-le le temps de lire les propriétés ?
Daniel

Merci pour vos réponses:
Daniel : CustomDocumentProperties ne s'utilise que sur un document ouvert

Isabelle : j'avais trouvé la solution sur developpez.com
mais l'adresse microsoft n'existe plus et je n'ais pas cette bibliothèque en
référence

dur dur

Encore une fois merci m'avoir consacré un peu de temps.


Avatar
Daniel.C
Ou peut-être :

Merci pour vos réponses:
Daniel : CustomDocumentProperties ne s'utilise que sur un document ouvert

Isabelle : j'avais trouvé la solution sur developpez.com
mais l'adresse microsoft n'existe plus et je n'ais pas cette bibliothèque en
référence

dur dur

Encore une fois merci m'avoir consacré un peu de temps.


Avatar
Daniel.C
Ou peut-être :
http://www.cpearson.com/excel/docprop.aspx
Daniel

Merci pour vos réponses:
Daniel : CustomDocumentProperties ne s'utilise que sur un document ouvert

Isabelle : j'avais trouvé la solution sur developpez.com
mais l'adresse microsoft n'existe plus et je n'ais pas cette bibliothèque en
référence

dur dur

Encore une fois merci m'avoir consacré un peu de temps.


Avatar
Joëlle B
Désolé Daniel, mais dans le contexte je ne peux vraiment pas ouvrir les
fichiers:
Plus de 600 répertoires a balayer et plus de 20 fichiers par répertoire.
Joëlle
Avatar
isabelle
bonjour Joëlle,

essaie sur celui ci pour le download

http://www.microsoft.com/downloads/details.aspx?FamilyId›A6FAC6-520B-4A0A-878A-53EC8300C4C2&displaylang=en
DsoFileSetup_KB224351_x86.exe

celui-ci crée un dossier
c:DsoFile qui contiendra le fichier dsofile.dll

isabelle

Joëlle B a écrit :
Merci pour vos réponses:
Daniel : CustomDocumentProperties ne s'utilise que sur un document ouvert

Isabelle : j'avais trouvé la solution sur developpez.com
mais l'adresse microsoft n'existe plus et je n'ais pas cette bibliothèque en
référence

dur dur

Encore une fois merci m'avoir consacré un peu de temps.



Avatar
michdenis
Il y a ceci ... reste à le faire boucler pour tous
les répertoires que tu désires :

Sub TousFichiersDunDossier()
Dim FSO As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim Sh As Worksheet
Dim EnTetes, ArrFSO

Application.ScreenUpdating = False
Set FSO = CreateObject("Scripting.FileSystemObject")
'adapter le dossier racine si besoin
NomDossier = ChoixDossierFichier("")
If NomDossier = "" Then Exit Sub
Set Dossier = FSO.GetFolder(NomDossier)

Set Files = Dossier.Files
If Files.Count <> 0 Then
Set Sh = Sheets.Add
EnTetes = Array("Chemin", "Nom", _
"Date création", "Date dernière modification", _
"Date dernier accès", "Taille", "Type", "Attribut(s)")
'mise en forme
With ActiveSheet.Range("A1:H1")
.Value = EnTetes
.Font.Bold = True
.Interior.ColorIndex = 43
.Borders.LineStyle = xlContinuous
.HorizontalAlignment = xlCenter
End With
i = 1
For Each File In Files
i = i + 1
With File
ArrFSO = Array(.ParentFolder & "", .Name, .DateCreated, _
.DateLastModified, .DateLastAccessed, .Size, .Type)
End With
Sh.Cells(i, 1). _
Resize(1, UBound(ArrFSO) - LBound(ArrFSO) + 1).Value = ArrFSO
Sh.Cells(i, UBound(ArrFSO) + 2).Value = Attributs(File.Attributes)
Next
End If
Sh.UsedRange.EntireColumn.AutoFit
Set FSO = Nothing: Set Sh = Nothing
Set Dossier = Nothing: Set File = Nothing
End Sub

Function Attributs(Attrib)
Dim Res$
If Attrib = 0 Then Res = "Aucun attribut"
If Attrib And 1 Then Res = Res & "/Lecture seule"
If Attrib And 2 Then Res = Res & "/Caché"
If Attrib And 4 Then Res = Res & "/Système"
If Attrib And 32 Then Res = Res & "/Archive"
Attributs = Res
End Function

Function ChoixDossierFichier(Racine, Optional SelType As Byte = 0)
Dim objShell, objFolder, Chemin, SecuriteSlash, FlagChoix&, Msg$

If SelType = 0 Then
FlagChoix = &H1&: Msg = "Choisissez un dossier :"
Else
FlagChoix = &H4000&: Msg = "Choisissez un fichier :"
End If

Set objShell = CreateObject("Shell.Application")
'le troisième paramètre permet de choisir
'la sélection d'un dossier ou d'un fichier (0 ou 1)
'le dernier paramètre permet de choisir le dossier racine
Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)
On Error Resume Next
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
If objFolder.Title = "Bureau" Then
Chemin = "C:WindowsBureau"
End If
If objFolder.Title = "" Then
Chemin = ""
End If

SecuriteSlash = InStr(objFolder.Title, ":")

If SecuriteSlash > 0 Then
Chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
End If
ChoixDossierFichier = Chemin
End Function






"Joëlle B" a écrit dans le message de groupe de
discussion :
Bonjour,
J’ai besoin d’aide pour trouver comment lire des propriétés personnalisées
d’un document non ouvert. Je ne peux pas ouvrir les documents car sous les
répertoires il y a des fichiers PowerPoint, des fichiers Word et des fichiers
Excel.
J’ai trouvé la possibilité de lire quelques propriétés prédéfinies :
Sub AfficheInfoAccesFichier2()
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = f.Name & vbCrLf
s = s & "Créée le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified & vbCrLf
s = s & "type :" & f.Type
MsgBox s, 0, "Infos d'accès au fichier"
End Sub
Mais impossible de trouver le code pour les propriétés personnalisées !

Je pourrais m’en sortir si je savais lire de la même façon le nom du modèle,
qui est une propriété prédéfinie.

Merci à tous.
Avatar
Joëlle B
Bonjour,
Merci à tous.
J’ai enfin trouvé ce que je cherchais sur
http://www.developpez.net/forums/d171265/hardware-systemes-logiciels/microsoft-office/general-vba/contribuez/lire-modifier-proprietes-fichiers-office/ :

Sub proprietesFichiers()
'source:
' http://www.microsoft.com/resources/documentation/windows/2000/server/
'scriptguide/en-us/sas_fil_lunl.mspx
'
'Necessite d'activer la reference Microsoft Shell Controls and Automation
'
Dim objShell As Object, strFileName As Object
Dim objFolder As Folder
Dim Resultat As String
Dim i As Byte

Set objShell = CreateObject("Shell.Application")
'repertoire cible
Set objFolder = objShell.Namespace("C:TEST")

'boucle sur tous les elements du repertoire
For Each strFileName In objFolder.Items
'pour que les sous dosssiers ne soient pas pris en comptes
If strFileName.IsFolder = False Then
Resultat = ""
For i = 0 To 34
Resultat = Resultat & objFolder.GetDetailsOf(strFileName, i) & vbLf
Next
MsgBox Resultat
End If
Next
End Sub

J’en profite pour remercier tous les contributeurs de ce site.
Je ne compte plus le nombre fois ou j’ai trouvé mon bonheur dans les
réponses déjà postées.

A plus

Joëlle