Je suis nul : qui saurait adapter un script pour modifier le niveau de sécurité Macro avant l'ouverture?
2 réponses
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:
"HKCU\Software\Microsoft\Office\10.0\Excel\Security\Level"
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 = "HKCU\Software\Microsoft\Office\9.0\Excel\Security\Level"
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:\06OfficeVBA\ClasseurTestSecurite.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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FxM
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
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.
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
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
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
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