[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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #26412634
Bonjour
Shell ("D:progGIEO1.reg"), vbNormalFocus

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")
HD
Le #26412638
Shell ("D:progGIEO1.reg"), vbNormalFocus

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
DanielCo
Le #26412644
Bonjour,
Peut-être :
Rep=Shell("D:progGIEO1.reg", vbNormalFocus)
Cordialement.
Daniel
Shell ("D:progGIEO1.reg"), vbNormalFocus

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
HB
Le #26412647
Bonjour,
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 :
Shell ("D:progGIEO1.reg"), vbNormalFocus

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


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
HD
Le #26412649
Rep=Shell("D:progGIEO1.reg", vbNormalFocus)

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
HD
Le #26412648
Parfait !!!
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
MichD
Le #26412663
Bonjour,
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
Publicité
Poster une réponse
Anonyme