Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comprehension de Fichier log d'utilisation d'un classeur de Michel Pierron

1 réponse
Avatar
francisco
Bonjour tout le monde

j'ai recupéré une macro de Michel Pierron dans le site du disciplus
simplex qui se trouve en dessous de ce message et je ne comprends pas les
trois premières lignes de cette macro, compte tenu de mon niveau en vba je
vous recopie la macro dans ce message elle permet de creer un fichier log
dans laquelle va se trouver la date d'ouverture du fichier la date de
fermeture de fichier et le nom de l'utilisateur
je cherche à savoir ceque represente le fichier advapi32.dll et comprendre
la Function UserName()
si quelqu'un d'entre vous pouvez m'expliquer

Merci à tous
Aurevoir tout le monde
Amicalement francisco

Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
LogUserAction "Closed"
End Sub

Private Sub Workbook_Open()
LogUserAction "Opened"
End Sub

Function UserName()
Dim S As String, n As Long, Res As Long
S = String$(200, 0): n = 199: Res = GetUserName(S, n)
UserName = Left(S, n - 1)
End Function

Sub LogUserAction(Action As String)
Dim f As Integer, HistLog As String
HistLog = Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1)
HistLog = ThisWorkbook.Path & "\" & HistLog & ".txt"
f = FreeFile
Open HistLog For Append Shared As #f
Write #f, Format(Now, "yyyy-mm-dd hh:mm:ss"), UserName, Action
Close #f
End Sub

1 réponse

Avatar
j
la macro en question utilise, en plus des fonctions habituelles d'Excel, des
fonctions API qu'elle va chercher dans les DLL de Windows. Il faut les
déclarer avant toute autre instruction, c'est ce qui est fait dans les
premières lignes
la première fonction GetUserName est récupérée dans la dll "advapi32.dll"

Cela permet d'étendre considérablement les possibilités du VB(A)
cf par ex http://jacxl.free.fr/cours_xl/cours_xl_jac.html#api_s



"francisco" a écrit dans le message de news:
bp8car$2e1$
Bonjour tout le monde

j'ai recupéré une macro de Michel Pierron dans le site du disciplus
simplex qui se trouve en dessous de ce message et je ne comprends pas les
trois premières lignes de cette macro, compte tenu de mon niveau en vba
je

vous recopie la macro dans ce message elle permet de creer un fichier log
dans laquelle va se trouver la date d'ouverture du fichier la date de
fermeture de fichier et le nom de l'utilisateur
je cherche à savoir ceque represente le fichier advapi32.dll et
comprendre

la Function UserName()
si quelqu'un d'entre vous pouvez m'expliquer

Merci à tous
Aurevoir tout le monde
Amicalement francisco

Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
LogUserAction "Closed"
End Sub

Private Sub Workbook_Open()
LogUserAction "Opened"
End Sub

Function UserName()
Dim S As String, n As Long, Res As Long
S = String$(200, 0): n = 199: Res = GetUserName(S, n)
UserName = Left(S, n - 1)
End Function

Sub LogUserAction(Action As String)
Dim f As Integer, HistLog As String
HistLog = Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1)
HistLog = ThisWorkbook.Path & "" & HistLog & ".txt"
f = FreeFile
Open HistLog For Append Shared As #f
Write #f, Format(Now, "yyyy-mm-dd hh:mm:ss"), UserName, Action
Close #f
End Sub