• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Userid ophalen en gebruiken

Status
Niet open voor verdere reacties.

arvie76

Gebruiker
Lid geworden
14 sep 2016
Berichten
84
Hoi,

Ik wil op basis van het userid van de persoon die het bestand gebruikt een aantal velden zichtbaar maken/onzichtbaar.

Ik gebruik daarvoor in "Thisworkbook" de volgende VB

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

Private Sub Workbook_Open()

End Sub
    Dim lpBuff As String * 25
    Dim ret As Long, UserName As String
    ret = GetUserName(lpBuff, 25)
    UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
    
    '**********************************************************************************
'vanaf hier kan je zelf wat code gaan aanpasen om te kijken wat het doet.

'Hier zeg je dat je de tekst "je bent ingelogd als:" in cel E1 wil hebben
    Range("E1") = "Je bent ingelogd als:"
'Hier plaats je de variabel ÚserName' die we hierboven hebben ingevuld.
    Range("G1") = UserName

Dit werkt goed echter wordt het user id dan weer gegeven op alle tabbladen in de cel G1 en heb ook een tabblad wat helemaal beveiligd is dus gaat het dan mis. Nu heb ik geprobeerd om de formule aan te passen door te verwijzen naar een sheet waar alleen het userid hoeft te worden weer gegeven. Maar daar krijg ik fout melding op.

Code:
'Hier zeg je dat je de tekst "je bent ingelogd als:" in cel E1 wil hebben
    Sheets("Telinstructie").Range("E1") = "Je bent ingelogd als:"
'Hier plaats je de variabel ÚserName' die we hierboven hebben ingevuld.
    Sheets("Telinstructie").Range("G1") = UserName

Op in de VB voor Telinstructie heb ik geprobeerd om twee userid aan te geven wat deze wel of niet mag zien. De overige mogen alleen tabblad versie en telinstructie zien.

Voorbeeld bestand bijgevoegd.
 

Bijlagen

  • Telinstructie voorbeeld.xlsm
    42,4 KB · Weergaven: 29
Geen idee waarom je een API gebruikt.
Volgens mij is dit voldoende:
Code:
Private Sub Workbook_Open()
    Sheets("Telinstructie").Activate
    Range("G1") = Environ("UserName")
    Range("D4").Select
    Sheets("Beheer").Visible = Lcase(Range("G1")) = "arvie76"
End Sub

Bovendien werkt jouw code alleen in 32-bit Office en niet in 64-bit.
 
Laatst bewerkt:
Thnx Edmoor

Hoi Edmoor,

Wat betreft dat API heb ik ook maar gewoon ergens van Internet/forum gehaald en werkte tot voor het bestand waar ik het gebruikte goed.

Heb jouw suggestie gebruikt en werkt tot op heden goed.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan