Windows-Anmeldung per Formel in Excel-Zelle

  • #1
K

klexy

Bekanntes Mitglied
Themenersteller
Dabei seit
04.05.2002
Beiträge
802
Reaktionspunkte
0
Ort
Bayern
Was weiß ich?
Mit =ZELLE(dateiname) kann man den Pfad + Dateinamen + Tabellenblattname anzeigen lassen.
Das sähe dann so aus: C:\Programme\Gemeinsame Dateien\SAP\System\[Kartoffelsalat.xls]Tabelle1

Was will ich?
Gibt es eine Formel mit der man anzeigen lassen kann, mit welcher Anmeldung sich man gerade an Windows angemeldet hat? (Hintergrund: In einer Excel-Tabelle tragen viele verschiedene Leute Datensätze ein. Manche nicht so toll. Per VBA-Private Sub (oder wie das heißt) sollen sie sich automatisch im Datensatz verewigen. Und dann gips aufe Fresse für die Bösen...)

Was hab ich?
Windows NT 4.5, Excel97

Kann man die Information evtl. per Web-Abfrage (iqy) oder so aus einer Datei holen, wo das hinterlegt ist? Wie könnte so eine Datei heißen?

Jetzt bin ich aber gespannt ::)
 
  • #2
Hi klexy,

mit einem Makro ist das machbar. Den könntest du beim Öffnen der Tabelle ablaufen lassen und den Usernamen dann in ein verstecktes Tabellenblatt schreiben. Von dort kannst Du ihn per Formel abholen.

Makro für UserName:
Code:
Declare Function GetUserName Lib advapi32.dll _
Alias GetUserNameA (ByVal lpBuffer As String, nSize As Long) As Long

Sub ShowUserName()
  Dim UserName As String
  Const c_BufferLen As Long = 50
  Dim Buffer As String * c_BufferLen
  GetUserName Buffer, c_BufferLen
  UserName = Left(Buffer, InStr(Buffer, Chr(0)) - 1)
  MsgBox (UserName)
End Sub

Gruß Matjes ;)
 
  • #3
Bis zum Bahnhof konnte ich dir folgen. Dann wurde es aber zappenduster :(

Ich versuch es mal am Montag mit dem altbewährten reinkopieren+ausprobieren.
Der Admin wird's dann schon richten ;)
 
  • #4
Hallo klexy,

ich hab dir ein Beispiel zum->reinkopieren+ausprobieren' geschrieben - damit es der Admin leichter hat. ;)

Also:

a) neue Mappe öffnen
b) mit Alt+F11 VB-Editor öffnen
c) im Projektfenster Doppelklick auf->Tabelle1'
d) nachfolgenden Code in das Code-Fenster der Tabelle1 einfügen
Code:
Option Explicit
'Die Tabelle wird auf Änderung überwacht
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim z As Range
  Const c_SpalteUserName = 9->Spalte in der der UserName hinterlegt werden soll
 ->Wurde der UserName schon einmal bestimmt ?
  If str_aktuellerUserName =  Then
    Call AktuellerUserName->UserName bestimmen
  End If
 ->Für jede geändert Zelle
  For Each z In Target
   ->Ist der Username bereits eingetragen ?
    If Cells(z.Row, c_SpalteUserName).Value <> str_aktuellerUserName Then
    ->Nein -> eintragen
      Cells(z.Row, c_SpalteUserName).Value = str_aktuellerUserName
    End If
  Next
End Sub

e) jetzt kannst du bestimmen, in welcher Spalte der UserName geführt werden soll
(unter Const c_SpalteUserName = die Spaltennummer 9 in die gewünschte ändern)

f) im Projektfenster rechte Maustaste auf->Arbeitsmappe' -> Einfügen -> Modul
g) im Projektfenster Doppelklick auf->Modul1'
h) nachfolgenden Code in das Code-Fenster->Modul1' einfügen
Code:
Option Explicit

'Modul zur Speicherung des UserNames
'(globale Variablen können nur in einem Modul gespeichert werden
' nicht in der Code-Seite eines Tabellenblattes)
Global str_aktuellerUserName As String
'******************************************************************
'Funktion zum Bestimmung des Login-UserNames
'speichert denUsrName in der globalen Variablen (siehe oben)
Declare Function GetUserName Lib advapi32.dll _
Alias GetUserNameA (ByVal lpBuffer As String, nSize As Long) As Long
Sub AktuellerUserName()
  Const c_BufferLen As Long = 50
  Dim Buffer As String * c_BufferLen
  GetUserName Buffer, c_BufferLen
  str_aktuellerUserName = Left(Buffer, InStr(Buffer, Chr(0)) - 1)
End Sub
'******************************************************************


i) jetzt irgenwo auf Tabelle1 Änderungen vornehmen.
Es sollte in der jeweiligen Zeile der UserName in der vorgeehenen Spalte erscheinen

Kopieren und Löschen von ein/mehreren Zellen ist ein Change-Ereignisse, Kopieren von ganzen Zeilen ebenfalls.
Wenn jemand aber eine ganze Zeile markiert und->Zellen löschen' wählt, bekommst du das nicht mit.

So, viel Spaß beim Ausprobieren

Gruß Matjes :)
 
Thema:

Windows-Anmeldung per Formel in Excel-Zelle

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben