Je suis nul : qui saurait adapter un script pour modifier le niveau de sécurité Macro avant l'ouverture?

Le
Pierre Giro
J'ai trouvé cet excellent script de Frédéric Sigonneau sur le forum et
j'aimerais l'adapter sous XP.
Malheureusement deux problèmes majeurs:

1) je ne comprends rien en informatique

2) sous XP, le niveau de sécurité des macros est stocké dans un endroit
différent du registre:
"HKCUSoftwareMicrosoftOffice10.0ExcelSecurityLevel"
Mais en remplaçant terme à terme la localisation dans le script ca ne
fonctionne pas

Quelqu'un pourrait-il m'aider ce serait vraiment très sympa!!!


Merci en tous cas,

Pierre.


'=
'Excel doit être fermé
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel doit être fermé pour exécuter ce script"
WScript.Quit
End If

Err.Clear

'objet script et chemin de la clé du registre pour Excel 2000
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "Ce script ne peut désactiver l'alerte macro que pour Excel
2000"
WScript.Quit
End If

Dim NiveauSecurite, wsh

'niveau de sécurité en début d'exécution
NiveauSecurite = wsh.RegRead(Cle2000)

'changement pour le niveau le plus faible
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'ouverture du classeur sans alerte macro
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)


'rétablissement du niveau de sécurité de départ
wsh.RegWrite Cle2000, NiveauSecurite,"REG_DWORD"

'pour vérifier si la clé pour Excel 2000 existe bien
Function IsExcel2000()
On Error Resume Next

Res=wsh.RegRead(Cle2000)
IsExcel2000=(Err=0)
End Function
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FxM
Le #313665
Bonsoir Pierre,

Pierre Giro wrote:
J'ai trouvé cet excellent script de Frédéric Sigonneau sur le forum et
j'aimerais l'adapter sous XP.
Malheureusement deux problèmes majeurs:

1) je ne comprends rien en informatique
Modifier un script lorsque l'on ne maitrise pas ... c'est la roulette

russe. Encore plus lorsqu'il s'agit de la base de registre !

2) sous XP, le niveau de sécurité des macros est stocké dans un endroit
différent du registre:
Le sujet pouvant donner lieu à de graves conséquences s'il était

utilisé par des esprits malveillants, tu comprendras qu'il n'y ait pas
beaucoup de volontaires pour répondre ...

AMHA, dis oui au message d'alerte macro si tu veux les activer. Ce
sera mieux pour tout le monde.

@+
FxM

Frédéric Sigonneau
Le #314875
Bonsoir,

Ce script fonctionne correctement avec Excel 2002 :)
Tu dois simplement l'adapter à ton besoin : le niveau de sécurité d'Excel est
modifié puis remis dans son état d'origine après lancement d'un fichier, ce qui
te donne sans doute cette impression qu'il ne se passe rien.
Prudence malgré tout avec ce genre de scripts : bidouiller les réglages de
sécurité des utilisateurs ne devrait être qu'une solution de dernier recours et
les antivirus actuels en bloquent heureusement l'exécution sauf autorisation
explicite de l'utilisateur..

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai trouvé cet excellent script de Frédéric Sigonneau sur le forum et
j'aimerais l'adapter sous XP.
Malheureusement deux problèmes majeurs:

1) je ne comprends rien en informatique

2) sous XP, le niveau de sécurité des macros est stocké dans un endroit
différent du registre:
"HKCUSoftwareMicrosoftOffice10.0ExcelSecurityLevel"
Mais en remplaçant terme à terme la localisation dans le script ca ne
fonctionne pas...

Quelqu'un pourrait-il m'aider ce serait vraiment très sympa!!!

Merci en tous cas,

Pierre.

'================== > 'Excel doit être fermé
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel doit être fermé pour exécuter ce script..."
WScript.Quit
End If

Err.Clear

'objet script et chemin de la clé du registre pour Excel 2000
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "Ce script ne peut désactiver l'alerte macro que pour Excel
2000..."
WScript.Quit
End If

Dim NiveauSecurite, wsh

'niveau de sécurité en début d'exécution
NiveauSecurite = wsh.RegRead(Cle2000)

'changement pour le niveau le plus faible
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'ouverture du classeur sans alerte macro
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)

'rétablissement du niveau de sécurité de départ
wsh.RegWrite Cle2000, NiveauSecurite,"REG_DWORD"

'pour vérifier si la clé pour Excel 2000 existe bien
Function IsExcel2000()
On Error Resume Next

Res=wsh.RegRead(Cle2000)
IsExcel2000=(Err=0)
End Function


Publicité
Poster une réponse
Anonyme