le titre peut ne pas être approprié parce que je ne sais pas vraiment comment je devrais mettre ceci. J'ai un template où j'ai un module "Module1" et un code "ThisDocument". Module1 contient le code suivant pour récupérer les valeurs du registre. Je prends ces valeurs du code ThisDocument.Word vba - Comment puis-je stocker des valeurs de chaîne dans un module?
Ce que je veux, c'est déplacer le code de ThisDocument vers son propre module. Et être capable d'accéder aux valeurs de tous les autres modules ou sous-marins.
En ce moment, ThisDocument a un code qui ressemble un peu à ceci:
regPath = ReadIni(File, "Registry", "Path")
regString = ReadIni(File, "Registry", "String")
regStrFirstname = ReadIni(File, "Fields", "Firstname")
regStrLastname = ReadIni(File, "Fields", "Lastname")
regStrInitials = ReadIni(File, "Fields", "Initials")
regStrFullname = ReadIni(File, "Fields", "Fullname")
Ainsi, au lieu d'avoir ce code dans ThisDocument, je voudrais avoir ce code dans un module distinct et d'être en mesure d'accéder les valeurs de ThisDocument directement. De cette façon, je peux prendre les valeurs de, disons un formulaire aussi. Remplir les zones de texte avec les valeurs, etc.
Comment est-ce que je devrais faire ceci?
Module1 ressemble à ceci:
Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias _
"GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias _
"WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
ByVal lpString As Any, ByVal lpFileName As String) As Long
'// INI CONTROLLING PROCEDURES
'reads an Ini string
Public Function ReadIni(Filename As String, Section As String, Key As String) As String
Dim RetVal As String * 255, v As Long
v = GetPrivateProfileString(Section, Key, "", RetVal, 255, Filename)
ReadIni = Left(RetVal, v + 0)
End Function
'reads an Ini section
Public Function ReadIniSection(Filename As String, Section As String) As String
Dim RetVal As String * 255, v As Long
v = GetPrivateProfileSection(Section, RetVal, 255, Filename)
ReadIniSection = Left(RetVal, v + 0)
End Function
Donc, cela signifie que je dois déclarer une fonction pour chacune des valeurs de registre? regPath, regFirstName, regLastName etc? –
Oui, une fonction pour chaque valeur de registre. – hol
Est-il impossible de créer une fonction avec un paramètre? De cette façon, vous pourriez juste passer les variables de registre et de chemin en tant que paramètres à cette Funtion .... – froeschli