Macro : Lister les propriétés d'un dossier

Bonjour,

A partir des macros d'exploration de répertoires et/ou dossiers de B Marcelly, j'ai réussi à avoir à peu près tout ce que je veux sauf les propriétés des répertoires.

Pour les fichiers les instructions suivantes me permettent de récupérer le chemin, la taille les dates....

oObj = createUnoService("com.sun.star.bridge.OleObjectFactory")
Cible = oObj.createInstance("Scripting.fileSystemObject")
proprietes=Cible.GetFile(Fichier)

Je n'arrive pas à trouver l'équivalent pour les répertoires.

Quelqu'un aurait-il la solution ?

Merci d'avance,

Claude

Bonjour Claude,

Pour les fichiers les instructions suivantes me permettent de récupérer
le chemin, la taille les dates....

oObj = createUnoService("com.sun.star.bridge.OleObjectFactory")
Cible = oObj.createInstance("Scripting.fileSystemObject")
proprietes=Cible.GetFile(Fichier)

Je n'arrive pas à trouver l'équivalent pour les répertoires.

fileSystemObject est un objet d'une librairie Windows qui comporte d'autres propriétés et méthodes probablement utilisables, telle que GetFolder().

Essayez ceci :

proprietes = Cible.GetFolder(nom du répertoire)

Bien entendu, vous aurez bien noté que tout ceci ne fonctionne(ra) que sous Windows puisque WSH est un de ses composants.

Pour plus d'infos sur FileSystemObject (FSO pour les intimes), une 'tite recherche sur internet devrait ramener "quelques" réponses, par ex : http://warin.developpez.com/access/fichiers/
ou : https://ss64.com/vb/filesystemobject.html

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,

Bonjour Claude,

oObj = createUnoService("com.sun.star.bridge.OleObjectFactory")
Cible = oObj.createInstance("Scripting.fileSystemObject")
proprietes=Cible.GetFile(Fichier)

Je n'arrive pas à trouver l'équivalent pour les répertoires.

Quelqu'un aurait-il la solution ?

Je complète ma réponse précédente.

Comme dit, les objets FSO sont des objets Windows. De fait, l'usage des macros qui les appellent n'est possible que dans cet OS.

Je conseille très vivement de rester multi plate-formes, tout comme LibO l'est aussi.

Voici une fonction native en Basic (donc multi plate-formes) qui permet de retrouver la date et l'heure de modification d'un répertoire. Vous remarquerez qu'elle fonctionne pour les fichiers (comme son nom le suggère) et pour les répertoires (puisque un répertoire est en fait un fichier).

8< ------------------------------------------------------------

Function GetFileDateTimeModified(ByRef pFileName As String) As Date
'Returns the date of the last modification for pFileName.
'Returns the date, or 0 if the operation couldn’t be executed.

  Dim lo_Date As new com.sun.star.util.DateTime
  Dim l_Date As Date
  Dim l_URLName As String 'file name in URL form
  Dim lo_SFA As Object 'the simple file access object

  On Local Error GoTo FEXIT
  l_Date = 0
  l_URLName = ConvertToURL(pFileName)
  If FileExists(l_URLName) Then
    lo_SFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
    lo_Date = lo_SFA.getDateTimeModified(l_URLName)
    l_Date = CDateFromUnoDateTime(lo_Date)
  End If
  
  FEXIT:
  GetFileDateTimeModified = l_Date
End Function 'GetFileDateTimeModified

------------------------------------------------------------- >8

Le coeur de cette fonction repose sur un objet SFA. Si vous creusez l'API SFA vous trouverez encore bien des propriétés intéressantes :slight_smile:
Voir :
https://www.openoffice.org/api/docs/common/ref/com/sun/star/ucb/XSimpleFileAccess.html

Exemple d'utilisation :
MyDir = GetCurrentDirectory()
MyDate = GetFileDateTimeModified(MyDir)

NB : GetCurrentDirectory() est une fonction de mon cru qui retourne le répertoire courant pour le document actuel

Bien cordialement,

Bonjour,

Et merci. Cela fonctionne parfaitement avec getfolder.

J'essayerai peut-être plus tard de réécrire avec la fonction en basic.

Bonne journée,
Claude

------- Message original --------
*Sujet: *[INTERNET] Re: [fr-users] Macro : Lister les propriétés d'un dossier
*Pour : *PREF31 Libreoffice <pref-open-office@haute-garonne.gouv.fr>, users LibreOffice LO <users@fr.libreoffice.org>