xaumichi
Goto Top

Arbeitsblatt mit Benutzername öffnen

Hallo!

So, jetzt bin habe ich noch eine Frage:

Ist es möglich, den Benutzernamen/LogIn Namen eines Rechner mit Hilfe von Excel 2007 auslesen?
Und kann man dann mit diesen Informationen eine Exceldatei so bearbeiten, dass für jeden Benutzernamen (der zuerst ausgelesen wurde) das jeweilige Arbeitsblatt geöffnet wird?

Klingt ziemlich kompliziert und befürchte, dass es auch so sein wird.
Aber vielleicht kann mir ja doch wer helfen!

mfg

Content-ID: 144344

Url: https://administrator.de/contentid/144344

Ausgedruckt am: 25.11.2024 um 00:11 Uhr

tbesand
tbesand 07.06.2010 um 21:38:43 Uhr
Goto Top
Hallo selbst,

dieser Code stammt von einer MS Seite:
  ' Declare for call to mpr.dll.
   Declare Function WNetGetUser Lib "mpr.dll" _
      Alias "WNetGetUserA" (ByVal lpName As String, _
      ByVal lpUserName As String, lpnLength As Long) As Long

   Const NoError = 0       'The Function call was successful

   Sub GetUserName()

      ' Buffer size for the return string.
      Const lpnLength As Integer = 255

      ' Get return buffer space.
      Dim status As Integer

      ' For getting user information.
      Dim lpName, lpUserName As String

      ' Assign the buffer size constant to lpUserName.
      lpUserName = Space$(lpnLength + 1)

      ' Get the log-on name of the person using product.
      status = WNetGetUser(lpName, lpUserName, lpnLength)

      ' See whether error occurred.
      If status = NoError Then
         ' This line removes the null character. Strings in C are null-
         ' terminated. Strings in Visual Basic are not null-terminated.
         ' The null character must be removed from the C strings to be used
         ' cleanly in Visual Basic.
         lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
      Else

         ' An error occurred.
         MsgBox "Unable to get the name."
         End
      End If

      ' Display the name of the person logged on to the machine.
      MsgBox "The person logged on this machine is: " & lpUserName

   End Sub
Ich würde diese Sub zu einer Function ummodeln, die Dir den ermittelten Usernamen als string zurückliefert, und dann in der auto_öffnen Funktion der gewünschten Arbeitsmappe einige Zeilen ähnlich der folgenden aufrufen:
Private Sub auto_open()        '...oder wie hiess das doch gleich?
    Dim strUsername As String
    strUsername = GetUserName()
    ActiveWorkbook.Sheets(strUsername).Activate
End Sub


Hope this helps,
/Thomas
xaumichi
xaumichi 07.06.2010 um 22:06:58 Uhr
Goto Top
Hm....gut, danke schön! Dann werd ich mich hier mal ein durcharbeiten und schau, was sich machen lässt.
Danke schon mal.

mfg
77559
77559 07.06.2010 um 23:21:03 Uhr
Goto Top
Warum nicht einfach über das Environment ?

    strUsername = Environ("USERNAME")

Gruß
LotPings