Récupérer le contenu d'une variable d'environnement (SET).
Récupérer le nom de login (réseau).
Récupérer une valeur stockée dans la base de registre.
Ce programme permet de récupérer une variable d'environnement (voir DOS
pour détail sur commande SET).
Dans cet exemple, la variable AU_LOCAL_DIR me retourne un chemin
(différent suivant les utilisateurs) où je trouve un fichier à traiter avec Excel.
Ce chemin est du type : AU_LOCAL_DIR="f:\renaud\audros\tmp"
Code de la procédure RechercheVariableEnvironnement
Sub RechercheVariableEnvironnement()' Déclaration des variables. Dim EnvString, Indx, Msg, PathLen Indx = 1 ' Initialise l'index à 1Do ' Extrait la variable d'environnement (AU_LOCAL_DIR) EnvString = Environ (Indx)' Vérifie l'entrée AU_LOCAL_DIR If Left (EnvString, 13 ) = "AU_LOCAL_DIR=" Then ' Extrait la longueur et met l'entrée dans une variable. PathLen = Len ( Environ ( "AU_LOCAL_DIR" ))Msg = Mid (EnvString, 14 , PathLen)Exit Do Else ' Pas d'entrée AU_LOCAL_DIR, donc on incrémente. Indx = Indx + 1End If Loop Until EnvString = "" If PathLen > 0 Then MsgBox Msg ' Affiche le message "f:\renaud\audros\tmp"Else MsgBox " Il n'existe pas de variable " & "d'environnement AU_LOCAL_DIR."End If End Sub
|
Cette fonction permet de récupérer le nom de login (et non pas le nom
d'utilisateur déclaré dans Excel).
Code de la fonction GetUserName
Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" ( ByVal lpName As String , _ ByVal lpUserName As String , lpnLength As Long ) As LongConst NoError = 0Function GetUserName ()Const lpnLength As Integer = 255 Dim status As Integer Dim lpName, lpUserName As String lpUserName = Space$ (lpnLength + 1 )status = WNetGetUser(lpName, lpUserName, lpnLength) If status = NoError Then lpUserName = Left$ (lpUserName, InStr (lpUserName, Chr ( 0 )) - 1 )Else MsgBox "Impossible d'obtenir le login."End End If GetUserName = lpUserName End Function
|
Code de la procédure AfficheLogin
Sub AfficheLogin()MsgBox GetUserNameEnd Sub |
Cette procédure permet de récupérer une valeur stockée dans la base de registre.
J'utilise personnellement cette procédure pour incrémenter un numéro de facture.
Cette valeur est stockée dans la clé :
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\
Private Sub LectureRegistry()' Lecture des infos dans la base de registre Call InfoRegistry ' Récupération du N° de facture NumFac = GetSetting (appname:= "Facture Grand Crès" , section:= "NumFacture" , key:= "Numéro" )' Incrémentation du N° de facture NumFac = NumFac + 1' Ecriture de la nouvelle valeur NumFac dans la base de registre SaveSetting appname:= "Facture Grand Crès" , section:= "NumFacture" , key:= "Numéro" , setting:=NumFac End Sub
|
Private Sub InfoRegistry()' Lecture de la valeur dans la base de registre NumFac = GetSetting (appname:= "Facture Grand Crès" , section:= "NumFacture" , key:= "Numéro" )' Si aucune valeur n'est présente dans la base de registre ... If NumFac = "" Then Numdepart = InputBox( "Indiquer le N° de votre dernière facture manuelle." , "Initialisation du numéro de facture" )' Si on clique sur le bouton Annuler, fin de procédure If Numdepart = "" Then End 'Sinon, on inscrit le numéro saisi dans la boîte de dialogue SaveSetting appname:= "Facture Grand Crès" , section:= "NumFacture" , key:= "Numéro" , setting:=Numdepart End If End Sub
|
Sub EffaceRegistry()' Effacement de la clé dans la base de registre On Error Resume Next DeleteSetting "Facture Grand Crès" End Sub
|