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

[VBA] Word 2013 et mode protégé à désactiver

30 réponses
Avatar
HD
Bonjour,

J'ai une macro VBA qui modifie le texte d'un document word. Ce document
word est en lecture seule afin d'être ainsi certain que l'utilisateur
fera un enregistré sous pour préserver le document original.

Mon souci est que depuis Word 2010 le document en lecture seule passe en
mode protégé dès l'ouverture et il n'est alors possible de le déprotéger
que si l'utilisateur désactive le mode protégé...

Je voudrais pouvoir garder le document original en lecture seule tout en
mettant le document en mode "normal" (et non protégé) dès son ouverture.

Est il possible de le faire et si oui comment ?

Cordialement,

HD

10 réponses

1 2 3
Avatar
Geo
Bonjour
Voilà ce que cela donne :
http://www.cjoint.com/c/FGbmBXKlK7F

Je suis perplexe car je ne connais pas du tout cette vue et ne sais pas
la reproduire.
Ce que je crains, c'est que si le document n'est pas modifiable, les
macros ne soient pas actives.
Ceci dit on peut dérouler une macro sur un document word à partir de
Excel.
Au pire, on pourrait faire avec un sendkeys puisque le M est souligné.
Si les macros sont actives, on peut neutraliser le save ou même le
renvoyer sur un SaveAs.
En tout cas, le souci ne se pose que pour les postes équipés de Word 2013 ou
Word 2016. Il n'y a aucun souci de ce genre avec les anciennes versions.
Malheureusement, avec le temps je vais me retrouver avec de plus en plus de
postes avec des versions Word 2013 ou supérieures...

Si vous pouviez nous donner le bout de code excel qui ouvre le fichier,
on pourrait partir de la même base.
Avatar
Geo
Il y a une fonction de protection des documents qui est active depuis
la version 2013 et dont les valeurs paraissent correspondre à votre
image.
Donc peut-être ouvrir le document ainsi :
Sub ouvreWord()
Dim doc As Word.Document
Dim app_word As Word.Application
Set app_word = GetObject(, "Word.Application")
Set doc = app_word.Documents.Add(Template:="D:DocumentsModeles Word
2016Etiquettes 10x3.dotm", documenttype:=wdNewBlankDocument)
If doc Is Nothing Then
MsgBox "Raté"
End If
doc.Protect Type:=wdNoProtection
app_word.Visible = True
End Sub
Avatar
HB
OK,
C'est donc la macro Excel qui ouvre le document word qui devrait être
modifiée puisque quand le document word est ouvert, lui même ne pourra
pas faire grand chose.
Puisque ce document doit resté intact, cela signifie que les
utilisateurs pourraient plutôt ouvrir un copie locale (temporaire).
Puisque de toutes façons les utilisateurs l'ouvrent mais n'ont pas le
droit de le modifier... à quoi sert de le passer en mode "modification"...
Excel pourrait très bien se charger de ces problèmes en faisant une
copie locale dans les docs persos :
CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
ou les temporaires
CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)
par exemple ...
avant d'ouvrir ce fichier créé
Cordialement,
HB
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
HD
Ce que je crains, c'est que si le document n'est pas modifiable,
les macros ne soient pas actives.

Pas de souci pour les macros, elles sont bien actives... mais elles sont
actives sur un document non modifiable d'où un beau message d'erreur
lorsque ma macro tente de modifier le texte du document.
Ceci dit on peut dérouler une macro sur un document word à partir de
Excel. Au pire, on pourrait faire avec un sendkeys puisque le M est
souligné.

Je ferais un contrôle de la version de Word avant de lancer le sendkey
mais ça pourrait être une solution.
Si les macros sont actives, on peut neutraliser le save ou même le
renvoyer sur un SaveAs.

Le code pour neutraliser le save et le renvoyer vers un saveas pourrais
m'intéresser. Pourriez vous me le communiquer ?
Si vous pouviez nous donner le bout de code excel qui ouvre le
fichier, on pourrait partir de la même base.

Le fichier est ouvert par Excel mais il est possible que certains
collègues l'ouvre directement en double cliquant sur le fichier.
Voici le code par lequel le document est ouvert :
Shell "Winword G:MatricesRapport.doc", vbMaximizedFocus
Je sais qu'il devrait être possible d'ouvrir le document Word
directement en lecture seule à partir de ma macro Excel mais :
1) un utilisateur pourrait l'ouvrir manuellement sans être en lecture
seule
2) les classeurs Excel comportant la macro d'ouverture de ce document
Word se retrouvent à de nombreux emplacements sur de nombreux postes.
Je préférerais donc agir sur le document Word en lui même.
@+
HD
Avatar
HD
C'est donc la macro Excel qui ouvre le document word qui devrait être
modifiée puisque quand le document word est ouvert, lui même ne pourra
pas faire grand chose.

Le document Word peut toujours exécuter les macros VBA. La seule chose
qui bloque c'est que le document est dans un mode protégé que l'on peut
enlever manuellement mais que je ne sais pas débloquer via le VBA.
L'utilisateur a également la possibilité d'ouvrir le document
manuellement en allant sur le répertoire et en faisant un double clic.
@+
HD
Avatar
HD
Ce que je crains, c'est que si le document n'est pas modifiable, les
macros ne soient pas actives.

Les macros VBA du document Word sont bien actives.
Au pire, on pourrait faire avec un sendkeys puisque le M est souligné.

J'ai fait un premier test avec les lignes suivantes :
ActiveDocument.Activate
Application.SendKeys ("%{a}")
Application.SendKeys ("m")
mais cela plante au premier SendKeys avec le message d'erreur "membre de
méthode ou de données introuvable"...
@+
HD
Avatar
Geo
Bonjour
Le code pour neutraliser le save et le renvoyer vers un saveas pourrais
m'intéresser. Pourriez vous me le communiquer ?

Il faudrait utiliser l'événement BeforeSave et dans le corps
Cancel = true
et programmer un SaveAs.
Comme c'est un peu loin et que je n'ai pas retrouvé d'exemples de code,
voici un document qui devrait vous aider :
http://www.faqword.com/evenements/evenements.pdf
Le fichier est ouvert par Excel mais il est possible que certains collègues
l'ouvre directement en double cliquant sur le fichier.

D'accord, je comprends mieux votre souci.
Pour le senkeys, pour taper Alt+T (vérifier que c'est bien ce qui
fonctionne, cela devrait être
SendKeys "(%T)", True
qui devrait être dans l'AutoOpen du document ou l'événement
DocumentOpen.
Avatar
?K?
Bonsoir
D'après HD
Bonjour,
J'ai une macro VBA qui modifie le texte d'un document word. Ce document word
est en lecture seule afin d'être ainsi certain que l'utilisateur fera un
enregistré sous pour préserver le document original.
Mon souci est que depuis Word 2010 le document en lecture seule passe en mode
protégé dès l'ouverture et il n'est alors possible de le déprotéger que si
l'utilisateur désactive le mode protégé...
Je voudrais pouvoir garder le document original en lecture seule tout en
mettant le document en mode "normal" (et non protégé) dès son ouverture.
Est il possible de le faire et si oui comment ?

pour enlever la protection
ActiveDocument.Unprotect
et pour la remettre (par exemple)
ActiveDocument.Protect Password:="", NoReset:úlse, Type:= _
wdAllowOnlyReading, UseIRM:úlse, EnforceStyleLock:úlse
donc par exemple dans thisdocument tu mets ça :
Private Sub Document_Open()
ActiveDocument.Unprotect
End Sub
fonctionne bien sous 2007 et 2003 pas testé eilleurs
cdlt
--
-
Avatar
HB
Bonsoir,
Par définition, le mode protégé ne peut pas être désactivé par une macro
à l'ouverture sinon il ne servirait à rien ;o)
Toutefois :
============================= Citation ============================== " Placez un fichier dans un emplacement approuvé lorsque vous ne
souhaitez pas qu’il soit vérifié par le Centre de gestion de la
confidentialité ou qu’il soit ouvert en mode protégé. Cela s’applique
particulièrement aux fichiers comportant des macros, des connexions de
données et des contrôles ActiveX (ce que nous appelons du contenu
actif). Si vous estimez que le contenu actif d’un fichier provient d’une
source fiable, il est préférable de placer le fichier dans un
emplacement approuvé plutôt que de définir le paramètre de sécurité du
Centre de gestion de la confidentialité sur un niveau moins élevé.
Ajouter un emplacement approuvé
1.Cliquez sur Fichier > Options.
2.Cliquez sur Centre de gestion de la confidentialité > Paramètres du
Centre de gestion de la confidentialité > Emplacements approuvés.
3.Cliquez sur Ajouter un nouvel emplacement.
4.Cliquez sur Parcourir pour rechercher le dossier, sélectionnez-le,
puis cliquez sur OK."
================== fin de citation ==================================
... je serais surpris si on pouvait "approuver" un dossier par macro...
Il faut donc que ce soit fait "par" les utilisateurs.
Cordialement,
HB
Le 30/11/2016 à 01:21, ?K? a écrit :
Bonsoir
D'après HD
Bonjour,

J'ai une macro VBA qui modifie le texte d'un document word. Ce
document word est en lecture seule afin d'être ainsi certain que
l'utilisateur fera un enregistré sous pour préserver le document
original.

Mon souci est que depuis Word 2010 le document en lecture seule passe
en mode protégé dès l'ouverture et il n'est alors possible de le
déprotéger que si l'utilisateur désactive le mode protégé...

Je voudrais pouvoir garder le document original en lecture seule tout
en mettant le document en mode "normal" (et non protégé) dès son
ouverture.

Est il possible de le faire et si oui comment ?


pour enlever la protection
ActiveDocument.Unprotect
et pour la remettre (par exemple)
ActiveDocument.Protect Password:="", NoReset:úlse, Type:= _
wdAllowOnlyReading, UseIRM:úlse, EnforceStyleLock:úlse
donc par exemple dans thisdocument tu mets ça :
Private Sub Document_Open()
ActiveDocument.Unprotect
End Sub
fonctionne bien sous 2007 et 2003 pas testé eilleurs
cdlt
Avatar
?K?
Bonjour
donc par exemple dans thisdocument tu mets ça :
Private Sub Document_Open()
ActiveDocument.Unprotect
End Sub
fonctionne bien sous 2007 et 2003 pas testé ailleurs


D'après HB
Bonsoir,
Par définition, le mode protégé ne peut pas être désactivé par une macro à
l'ouverture sinon il ne servirait à rien ;o)

houps... c'est vrai j'ai confondu protection du document et mode
protégé
la macro ci-dessus désactive la protection qu'on a expressément définie
dans l'onglet révision avec "protéger le document"
et le mode protégé lui est actif par défaut et prétend entre autres
empêcher les gens de travailler sur le réseau par exemple... (sauf si
l'utilisateur va modifier les réglages)
donc réponse précédente hors sujet, dsl
cdlt
--
-
1 2 3