Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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

VBA und lange Zahlen

VBA und lange Zahlen
28.12.2016 11:14:26
Jan
Hallo zusammen,
von Zeit zu Zeit muss ich eine Auswertung über das Firmen-AD durchführen. Dabei werden dieverse Gruppenmitgliedschaften, Kontainer, usw. Abgefragt. Eine der Abfragen bezieht sich auch auf die Anzahl der User, die sich seit 180 Tagen nicht mehr angemeldet haben.
Genau diese Abfrage schaffe ich nicht in VBA.
Problem hierbei ist die Kürzung langer Zahlen. Bsp: Gesucht werden alle Accounts deren Anmeldung vor '131118394160000000' liegen. VBA macht daraus '1,311184E+17' und gibt dies auch genau so.
Hat vielleicht jemand den entscheidenen Tipp damit ich den Wald wiederfinde?
Viele Grüße
Jan
Code:

Public Function AllUsers()
Dim Datum As Single
Datum = (CDbl(DateAdd("d", -180, Now)) + 109205) * (8.64 * 10 ^ 11)
OrgaRead Platzhalter"(&(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2)( _
lastlogontimestamp
Modul:

Public Database
Public Function OrgaRead(Pfad As String, Filter As String, Eigenschaften As String)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = Pfad & objRootDSE.Get("defaultNamingContext")
strBase = "[LDAP://" & strDNSDomain & "]"
Set adoCommand = CreateObject("ADODB.Command")
Set ADOConnection = CreateObject("ADODB.Connection")
ADOConnection.Provider = "ADsDSOObject"
ADOConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = ADOConnection
'strFilter = "(&(objectClass=" & ObjectTyp & ")" & ADFeld & ");" & What & "; subtree"
strQuery = strBase & ";" & Filter & Eigenschaften & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 10000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
'adoCommand.Properties("Sort on") = Sort
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.BOF Then Database = adoRecordset.GetRows
End Function
PS/Zusatzfrage: Wie im Code ersichtlich, Arbeite ich derzeit noch mit Rückgabewerte (Database Array). Dieses Nutze ich, um eine Zählung der Ergebnisse zu erhalten (Bsp: Gruppe A enthält 120 Benutzer). Gibt es hierfür vielleicht einen direkteren Weg?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Strings
28.12.2016 12:53:58
lupo1
sehe ich als einzige Möglichkeit. Bei fixen Längen sollte das auch aus Suchgesichtspunkten unproblematisch sein. Außerdem wird man ja eh immer mit MID auslesen und stringmäßig verketten.
AW: Strings
28.12.2016 14:15:48
Jan
Vielen Dank lupo1 für die Hilfestellung.
Der Tipp mit dem String hat den Stein wieder in Rollen gebracht. Zumindest bis zum 16.11.4769 komme ich mit einer angenommenen, festen String-Größe klar.
Nur den Hinweis mit MID bezogen auf mein Problem hab ich leider noch nicht begriffen.
Quick 'n Dirty Code:

Dim Datum As String
Datum = Split(Replace(CStr(CDbl(DateAdd("d", -180, Now)) + 109205) * (8.64 * 10 ^ 11), ",", ""), _
"E")(0)
For i = 1 To 18 - Len(Datum)        'Auffüllen der fehlenden Stellen mit 0
Datum = Datum & "0"
Next
Variable Lösung nach 16.11.4769:

Dim Datum As String
Datum = Replace(CStr(CDbl(DateAdd("d", -180, Now)) + 109205) * (8.64 * 10 ^ 11), ",", "")
For i = 1 To Int(Split(Datum, "E+")(1)) + 1 - Len(Split(Datum, "E+")(0))    'Auffüllen der  _
fehlenden Stellen mit 0
Datum = Split(Datum, "E+")(0) & "0"
Next

Anzeige
AW: Strings
29.12.2016 21:35:22
Piet
Hallo Jan
wenn ich lupo1 richtig verstanden habe meint der die Funktion zum Text aus der Mitte ausschneiden.
Teilwert = Mid(Variable,10,5) - Hier wird ab der 10 Stelle 5 Buchstaben oder Zahlen ausgeschnitten
mfg Piet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige