Bonjour,
Le 22/11/2017 à 15:21, PREF31 Libreoffice a écrit :
J'ai une macro qui liste les différents fichiers d'un dossier ainsi que
leurs propriétés et je voudrais rajouter la mention "ouverture avec mot
de passe" si c'est le cas.
Je n'ai pas besoin de connaître le mot de passe, juste de savoir qu'il y
en a un soit à l'ouverture soit en édition.
Je ne trouve pas cette information dans les propriétés du fichier.
Pour ceux que ça intéresse, la macro ci-dessous permet de vérifier la
protection d'un document en testant, comme indiqué par Jacques,
l'existence du dossier "Thumbnails" dans le document (zip).
8< ----------------------------------------------------------------
Function IsDocumentProtected(ByRef pDocURL As String) As Integer
'Checks whether a given LibreOffice document is protected
'This test is based upon the fact that a LibO protected document zip
structure
'doesn't contain the usual 'Thumbnails' directory.
'
'Input:
'-- pDocURL: the document name (FQDN) in URL form.
' This document is supposed to exist.
'Output: 1 if the document is protected in any way, 0 if the document is
not protected
' or -1 if an error occurred (eg: the document is not a LibO
one/not in zip format)
Const ZIP_DIR_ROOT = ""
Const ZIP_DIR_THUMBNAILS = "Thumbnails"
Dim l_Protected As Integer
Dim lo_Package As Object 'the zip document container
Dim l_Arg As New com.sun.star.beans.NamedValue
l_Protected = -1 'default value: unknown/error
On Local Error Goto ErrHandler
lo_Package = createUnoService("com.sun.star.packages.Package")
'open the document zip container
l_Arg.Name = "PackageFormat"
l_Arg.Value = False 'plain Zip format
lo_Package.initialize(Array(pDocURL), l_Arg)
'check for "Thumbnails" directory
'Checking for root first allows to ignore non-zip containers
If lo_Package.hasByHierarchicalName(ZIP_DIR_ROOT) Then
If lo_Package.hasByHierarchicalName(ZIP_DIR_THUMBNAILS) Then
l_Protected = 0 'not protected
Else
l_Protected = 1 'protected
End If
End If
'close zip container
lo_Package = Nothing
ErrHandler:
'do nothing
'We get here either because everything went OK or because the
.initialize went wrong.
IsDocumentProtected = l_Protected
End Function 'IsDocumentProtected
---------------------------------------------------------------- >8
Pour l'appeler, voici un bout de code :
8< ----------------------------------------------------------------
Sub Test()
Dim l_FileName As String
Dim l_ThisDir As String
l_ThisDir = "C:/Chemin/Vers/"
l_FileName = ConvertToURL(l_ThisDir & "MonFichier.ods")
Select Case IsDocumentProtected(l_FileName)
Case 0
MsgBox l_FileName & " NON protégé"
Case 1
MsgBox l_FileName & " protégé"
Case -1
MsgBox l_FileName & " INCONNU"
End Select
End Sub 'Test
---------------------------------------------------------------- >8
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,
--
Jean-Francois Nifenecker, Bordeaux
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.