Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Active Directory in Variablen

Active Directory in Variablen
20.06.2023 15:00:02
Stefan

Hallo ...

Ich wollte die Active Directory auslesen und die entsprechenden Einträge einzelnen Variablen zuweisen ... um sie dann im Laufe der Bearbeitung im Workbook weiter zu verwenden.

Das heißt:
Die Variablen sollen beim Öffnen des Workbooks gefüllt werden und über die ganze Session hin verfügbar sein.

Trage ich den Code in eine Sub unter "Workbook-open" passiert nichts ... eine MsgBox mit der Variable "vName " bleibt leer.

Füge ich den Code in das "Click"-Ereignis eines Testbuttons ein, dann wird die Variable in der MsgBox dargestellt.

Den Code habe ich aus einer Access-Datenbank, die ich vor Jahren geschrieben habe und wo es auch so funktioniert, wie ich es hier gerne wieder hätte.

Was also muß ich - und wie - tun, damit die Variablen beim Öffnen des Workbooks mit den Werten aus der ActiveDirectory dauerhaft gefüllt werden?

Schon mal Danke im Voraus ...

Stefan


Public vMailAdresse As String
Public vName As String
Public vVorname As String
Public vStrasse As String
Public vUsername As String
Public vTelefon As String


Public Function ADInfos()
Dim oADInfo As Object
Dim oUser As Object, vUser As String

'Dim vMailAdresse As String, vName As String, vVorname As String, vStrasse As String
Set oADInfo = CreateObject("ADSystemInfo")
vUser = oADInfo.UserName
Set oUser = GetObject("LDAP://" & vUser)

vMailAdresse = oUser.mail

vName = oUser.cn

vVorname = oUser.givenName

vStrasse = oUser.streetAddress

vTelefon = oUser.telephoneNumber

vUsername = oUser.userPrincipalName

Set oUser = Nothing

Set oADInfo = Nothing
End Function


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Active Directory in Variablen
20.06.2023 15:14:53
onur
"Trage ich den Code in eine Sub unter "Workbook-open" passiert nichts" ? WELCHEN Code denn? Das, was du gepostet hast, ist eine Function und egal, wo du den Code davon einträgst, es kann nix passieren, solange die Function nicht aufgerufen wird.
WO also ist denn nun der Code?


AW: Active Directory in Variablen
20.06.2023 15:18:32
Stefan
Hallo onur ...

Jetzt wo Du es sagst, fällt es mir auch auf ...

Sollte ich aus der Function eine Sub machen?


AW: Active Directory in Variablen
20.06.2023 15:21:55
onur
Du musst zumindest sie einmal (im Workbook_Open) aufrufen - z.B. mit X=ADInfos()
Und all das, was du gepostet hast, muss sich natürlich in einem allgemeinen Modul befinden.


Anzeige
AW: Active Directory in Variablen
20.06.2023 16:01:07
Stefan
So ...

Ich weiß nicht, ob ich Dich richtig interpretiert habe.

Ich habe jetzt die Variablendeklarationen:


Option Explicit

Public vMailAdresse As String
Public vName As String
Public vVorname As String
Public vStrasse As String
Public vUsername As String
Public vTelefon As String
Unter "Allgemein", "Deklarationen" eingetragen.

Unter "Workbook_open" steht der Teil, der die Active Directory ausliest:


Private Sub Workbook_Open()


Dim oADInfo As Object
Dim oUser As Object, vUser As String

'Dim vMailAdresse As String, vName As String, vVorname As String, vStrasse As String
Set oADInfo = CreateObject("ADSystemInfo")
vUser = oADInfo.UserName
Set oUser = GetObject("LDAP://" & vUser)

vMailAdresse = oUser.mail

vName = oUser.cn

vVorname = oUser.givenName

vStrasse = oUser.streetAddress

vTelefon = oUser.telephoneNumber

vUsername = oUser.userPrincipalName

Set oUser = Nothing

Set oADInfo = Nothing

' ===============================

    UserForm_Menu.Show
End Sub
Unter "Private Sub UserForm_Initialize()" steht eine Einfache MsgBox, die mir die Variable "vName" ausgeben soll (als Test):


Private Sub UserForm_Initialize()

' viel mehr Code 

MsgBox vName
End Sub
Öffne ich jetzt das Workbook, bekomme ich (bei der Ausführung von "Private Sub UserForm_Initialize()") die Fehlermeldung, das die Variable "vName" nicht definiert ist.

Vielleicht habe ich ja die Variablendeklaration nicht verstanden ... aber:

1. Beim Öffnen des Workbooks werden die Variablen als "public" deklariert.
Ebenfalls wird die AD ausgelesen und in die Variablen geschrieben.
Das Userform wird geöffnet.

2. Beim Öffnen des Userforms soll eine MsgBox mit dem angemeldeten User angezeigt werden.

Stattdessen kommt die obige Fehlermeldung.

Gruß Stefan


Anzeige
AW: Active Directory in Variablen
20.06.2023 16:07:07
onur
Ich habe doch geschrieben: Die Deklarationen für Public-Variablen gehören In ein ALLGEMEINES Modul:
Userbild


AW: Active Directory in Variablen
22.06.2023 06:53:42
Stefan
So ....

Ich konnte mich erst gestern wieder mit dem Problem auseinandersetzen ... und denke, jetzt war mein Brett vor dem Kopf weg und ... ich konnte Deinen Hinweis richtig nachvollziehen.

Ich habe ein neues Modul erstellt in dem sowohl die Variablen als "Public" deklariert sind, als auch die Funktion:


Public vMailAdresse As String
Public vName As String
Public vNachname As String
Public vVorname As String
Public vStrasse As String
Public vUsername As String
Public vTelefon As String


Function ADInfos() As String
Dim oADInfo As Object
Dim oUser As Object, vUser As String

'Dim vMailAdresse As String, vName As String, vVorname As String, vStrasse As String
Set oADInfo = CreateObject("ADSystemInfo")
vUser = oADInfo.UserName
Set oUser = GetObject("LDAP://" & vUser)

vMailAdresse = oUser.mail

vName = oUser.cn

vNachname = oUser.lastname

vVorname = oUser.givenName

vStrasse = oUser.streetAddress

vTelefon = oUser.telephoneNumber

vUsername = oUser.userPrincipalName

Set oUser = Nothing

Set oADInfo = Nothing
End Function

Auf diese Funktion greife ich dann an den entsprechenden Stellen mit:


Call ADInfos
zu. (Und ich denke, genau das wolltest Du mir mit Deiner ersten Antwort auch sagen.)

Und es funktioniert. :)


Anzeige
Gerne !
22.06.2023 07:08:04
onur
Aber Functions benutzt man nur, wenn man auch Werte als Parameter mitgibt und ein Ergebnis ausgeben will. Wie z.B. die Excel-Funktion Wurzel():
x=Wurzel(y) - und so wird auch eine Funktion aufgerufen. Sie übernimmt den Parameter y, macht damit div. Berechnungen und gibt das Ergebnis aus.
Was du brauchst, ist eine Public Sub, da weder Parameter gebraucht werden noch ein von dem/den Parameter/n abhängiges Ergebnis ausgegeben werden muss

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige