Bonjour,
Merci beaucoup de votre réponse.
Votre macro fonctionne très bien, c'est bien ce que je cherchais.
Je ne connaissais pas isLibraryPasswordProtected ni
verifyLibraryPassword. Cela va mieux avec !
Je maintiens cependant que si on cherche à ouvrir la bibliothèque sans
utiliser ces fonctions, donc sans donner le mot de passe, et qu'on tente
de modifier le contenu d'un module, il n'y a pas de message d'erreur
mais on n'a ensuite plus accès à la bibliothèque, le mot de passe est
refusé (que ce soit via une macro ou via l'EDI). Et ce bien que,
contrairement à ce que je pensais dans mon précédent message, on ait en
fait pas accès au contenu des modules qui effectivement ne s'affiche pas
(donc qui n'a pas pu être lu).
En tout cas sur mon système, si je copie votre macro telle quelle en
enlevant simplement les 3 lignes
if (libCont.isLibraryPasswordProtected(libName) = true) then
libCont.verifyLibraryPassword(libName, passw)
end if
je n'ai aucun message d'erreur mais les macros du document traité ne
sont plus accessibles.
En tout cas, encore merci!
Pascal
Thibault Vataire a écrit :
Bonjour,
Je n'arrive pas à reproduire votre problème :
1/ lorsqu'une de mes librairies est protégée par mot de passe, je n'arrive pas
à lire/modifier sont contenu avec une autre macro.
2/ lorsque j'ouvre cette librairie avec le mot de passe, je peux lire/modifier
le contenu et le sauvegarder. Cela n'empêche en rien d'accéder à son contenu
par la suite, que ce soit par macro ou par l'interface graphique.
Voici un exemple de la manière dont je procède :
option explicit
sub main
dim const passw = "password"
dim const libName = "mdp"
dim const modName = "Module1"
dim doc as object
dim libr as object
dim libCont as object
dim modContent as string
doc = starDesktop.loadComponentFromUrl(
convertToUrl("/tmp/test_mdp.ods"), _
"_blank", _
com.sun.star.frame.FrameSearchFlag.CREATE, _
array())
libCont = doc.basicLibraries
libCont.loadLibrary(libName)
libr = libCont.getByName(libName)
'rien ne s'afficher à cause du mot de passe
modContent = libr.getByName(modName)
msgbox(modContent)
'affiche le contenu du module
if (libCont.isLibraryPasswordProtected(libName) = true) then
libCont.verifyLibraryPassword(libName, passw)
end if
modContent = libr.getByName(modName)
'modifie, met à jour le module et re-affiche le contenu
libr.replaceByName(modName, (modContent & chr(10) & "'commentaire ajouté au
module."))
modContent = libr.getByName(modName)
msgbox(modContent)
doc.store()
doc.dispose()
end sub
Est-ce également de cette manière que vous modifiez le contenu de la macro?
Peux-être n'ai-je pas bien compris votre problème?
Cordialement,
T. Vataire
----- Mail Original -----
De: "Pascal Chantriaux" <pascal.chantri...@free.fr>
À: prog@fr.openoffice.org
Envoyé: Dimanche 8 Mars 2009 08h26:39 GMT +01:00 Amsterdam / Berlin / Berne /
Rome / Stockholm / Vienne
Objet: [prog] Mot de passe bibliotheque
Bonjour,
J'ai écrit une macro qui, à partir d'un document calc A, ouvre un autre
document calc B qui contenant une bibliothèque de macro M protégée par
mot de passe pour éliminer les lignes de commentaire de M afin de
réduire la taille du document B.
Je suis surpris qu'on puisse faire cela sans donner le mot de passe de
la bibliothèque (je n'ai pas trouvé comment le faire et cela ne semble
pas empêcher la macro d'agir)
Cette macro fonctionne bien comme j'ai pu le constater en la faisant
tourner en laissant le document B ouvert par contre si elle sauve
ensuite le document B, il n'y a plus moyen d'ouvrir la bibliothèque M,
il refuse le mot de passe ainsi que le mot de passe vide.
Ce comportement est-il connu ?
D'avance, merci.
Pascal
---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org
---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org