Lire dans la base de registre via une BDD Access 2002

Résolu
Asaiel Messages postés 37 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006 - 1 déc. 2005 à 01:21
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 2 déc. 2005 à 16:25
Bonjour,

Une petite question toute bete, je souhaite lire une valeur du registre dans mon appli ACCESS.
J'utilise le code suivant:
Private Sub Form_Load()
Dim key As String
Dim WshShell As Object

key = "HKEY_LOCAL_MACHINE\SOFTWARE\MySoftware\Name"
Set WshShell = CreateObject("WScript.Shell")

Me.txtname.Caption = "Nom de l'application: " & WshShell.RegRead(key)

Set WshShell = Nothing
End sub

Cela ne fonctionne pas, j'obtiens systematiquement l'erreur 91: Variable objet ou variable de bloc with non definie.
J'utilise pourtantun code similaire dans d'autre application mais sous VB6, et la ca marche....

Si quelqu'un a une idée...

En vous remerciant

7 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
2 déc. 2005 à 10:56
re,

est ce que le programme dont tu as extrait cette source fonctionne sur la meme machine ?

fait ce test :
sous VBA pour access, tu vas dans le menu outil/reference
la tu coche la reference "windows script host object model"

ensuite en lieu et place de ta declaration de WshShell tu fais :
Dim objWsShell As New WshShell

ensuite tu supprime la ligne ou tu fais ton "createobject"


et enfin, tu remplace partout WsShell, par objWsShell


la ca devrait foncitonner.


en plus tu aura la completion, quand tu ecrira ton code, il va te proposer les methodes qui correspondent a l'objet objWsShell, et tu sera sur de ne pas faire de faut de frappe...


essaie et dis moi si tu as encore un probleme.
3
Asaiel Messages postés 37 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006
2 déc. 2005 à 11:40
Bien joué effectivement c bien ca qui manquait. Merci a toi d'avoir pris le temps de reflechir a mon probleme.

De mon coté, j'ai aussi trouvé d'autre elements pour ecrire dans le registre avec une bdd access: il s'agit des méthodes savesetting et getsetting qui permettent respectivement d'ecrire et de lire a un endroit bien precis du registre, sous une clé nommée HKEY_USERS\(votre identification d'utilisateur)\Software\VB and VBA Program Settings.

Je poste cette solution aussi, quelq'un peut en avoir besoin....

Encore une fois merci a toi aieeeuuuuu...:D
3
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
1 déc. 2005 à 11:18
salut

quelle est la ligne qui provoque l'erreur ?
moi je trouve que ca sent l'erreur de frappe.

verifie bien le nom de tous tes objets.
et puis decoupe ton prog pour voir exactement d'ou vient le probleme ?

par exemple, pour le test fait

strTest = WshShell.RegRead(key)
Me.txtname.Caption = "Nom de l'application: "
Me.txtname.Caption = "Nom de l'application: " & strTest
0
Asaiel Messages postés 37 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006
1 déc. 2005 à 11:28
L'erreur provient de la ligne suivante:

Me.txtname.Caption = "Nom de l'application: " & WshShell.RegRead(key)

Tous les objets sont déclarés dans cette procédure (key & wshShell), et g copié collé le code ici, je ne pense pas avoir fait de faute....

Merci d'avoir pris le temps de jeter un oeil a mon probleme, tu vois autre chose?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
1 déc. 2005 à 15:29
tu as fait le test que je t'ai suggeré ? ca a donné quoi ?
sur quelle ligne ca plante du coup ?
0
Asaiel Messages postés 37 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006
1 déc. 2005 à 18:58
J'ai effectué le test dont tu m'as parlé au dessus, j'obtiens donc le code suivant:

Private Sub Form_Load()
Dim key As String
Dim WshShell As Object
Dim keyname As String

key = "HKEY_LOCAL_MACHINE\SOFTWARE\MySoftware\Name"
Set WshShell = CreateObject("WScript.Shell")
keyname = WshShell.regread(key)

Me.txtname.Caption = "Nom de l'application: "
Me.txtname.Caption = "Nom de l'application: " & WshShell.RegRead(key)

Set WshShell = Nothing
End sub

L'erreur apparait a la ligne suivante:
keyname = WshShell.regread(key)

Et il s'agit toujours de l'erreur 91 décrite ci-dessus. Je précise que j'utilise ACCESS 2002...
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
2 déc. 2005 à 16:25
de rien ;)
0
Rejoignez-nous