[VBA] Exécuter un fichier reg
Le
HD

Bonjour,
En VBA, je voudrais exécuter un fichier << .reg >> afin de modifier la
base de registre pour l'utilisateur. Sur la session de l'utilisateur, si
je double-clique sur le fichier .reg en question, il s'exécute bien et
demande une confirmation.
Lorsque je tente de le lancer via le VBA il m'affiche une erreur
d'exécution 5. Argument ou appel de procédure incorrect.
J'ai testé :
Shell ("D:progGIEO1.reg"), vbNormalFocus
Et :
Shell "regedit /s ""D:progGIEO1.reg""", 0
Je ne cherche pas forcément à lancer le reg et qu'il s'exécute sans
boite de dialogue. Si il se lance avec demande de confirmation (comme
lorsque l'on clique dessus) cela me conviendra parfaitement.
Merci d'avance pour votre aide,
@+
HD
En VBA, je voudrais exécuter un fichier << .reg >> afin de modifier la
base de registre pour l'utilisateur. Sur la session de l'utilisateur, si
je double-clique sur le fichier .reg en question, il s'exécute bien et
demande une confirmation.
Lorsque je tente de le lancer via le VBA il m'affiche une erreur
d'exécution 5. Argument ou appel de procédure incorrect.
J'ai testé :
Shell ("D:progGIEO1.reg"), vbNormalFocus
Et :
Shell "regedit /s ""D:progGIEO1.reg""", 0
Je ne cherche pas forcément à lancer le reg et qu'il s'exécute sans
boite de dialogue. Si il se lance avec demande de confirmation (comme
lorsque l'on clique dessus) cela me conviendra parfaitement.
Merci d'avance pour votre aide,
@+
HD
Je mettrais plutôt la parenthèse à la fin :
Shell ("D:progGIEO1.reg", vbNormalFocus)
vous pouvez aussi essayer sans le deuxième argument qui est facultatif
:
Shell ("D:progGIEO1.reg")
J'ai toujours le même message d'erreur.
@+
HD
Peut-être :
Rep=Shell("D:progGIEO1.reg", vbNormalFocus)
Cordialement.
Daniel
1) Puisque la fonction SHELL prévoit un retour
(qui est l'ID du processus, je crois)
il faut aussi le prévoir.
2) La commande REG est bien plus riche et pratique que regedit.
3) On peut mettre le chemin vers l'extrait (*.reg) en argument
de cette sub ... Ainsi, cela peut servir à plusieurs choses.
Testé et qui marche :
Sub MetREG(CheminREG As String)
Dim LIGNECOMMANDE As String
Dim Bidon As Variant
LIGNECOMMANDE = "REG import " & Chr(34) & CheminREG & Chr(34)
Bidon = Shell(LIGNECOMMANDE, vbNormalNoFocus)
End Sub
Sub TEST()
MetREG "D:TempTruc Bidon.reg"
End Sub
Cordialement,
HB
Le 12/10/2016 à 14:25, HD a écrit :
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Cela ne change rien. D'après mes recherches, cela pourrait être lié au
fait qu'en ligne de commande regedit aurait besoin d'une élévation de
privilège... Lorsque l'on
Shell("regedit.exe")
ne fonctionne pas alors que
Shell("notepad.exe")
fonctionne parfaitement.
@+
HD
Si regedit ne fonctionne pas en VBA... REG lui permet effectivement de
fonctionner et ce sans aucun message de confirmation.
Merci à vous tous pour votre aide,
@+
HD
Je crois qu'il y a aussi ceci, évidemment je n'ai pas testé!
'----------------------------------------------------------
Sub test()
Dim X As WshShell.Shell
Dim MyFile As String
Dim WshShell As Object
MyFile = "C:UsersMichDDocumentsMyFile.Reg"
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "Regedit.exe /s "" & MyFile & """, 0, True
'OU
WshShell.Run "regedit /s C:UsersMichDDocumentsMyFile.Reg", 0, True
End Sub
'----------------------------------------------------------
MichD