Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Letzter Benutzer der Datei speichern

Letzter Benutzer der Datei speichern
04.03.2019 15:33:38
Memo
Hallo an Alle VBA Liebhaber,
ich bin erst seit einigen Wochen neu in der VBA Welt. Hoffe Ihr könnt mir bei meiner Fragestellung helfen.
Ich habe eine Excel Übersichtsliste, in der ca 30 Personen Ihre Daten eingeben und abspeichern. Die Datei liegt auf einem Netzwerk.
Wie der Betreff schon aussagt möchte ich nur den letzten Benutzer dieser Datei speichern, gerne mit Datum + Uhrzeit.
Die gespeicherten Benutzer sollen als ein separates Arbeitsblatt in der selben Datei abgespeichert werden.
Besten Dank an alle im Vorab.
VG
Memo
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzter Benutzer der Datei speichern
04.03.2019 15:45:12
Bernd
Servus Memo,
den Code direkt unter "Diese Arbeitsmappe":

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Sheets("Protokoll")
.Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = Environ("Username")
.Cells(.Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Value = Date
.Cells(.Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = Time
End With
End Sub
Grüße, Bernd
Anzeige
AW: Letzter Benutzer der Datei speichern
04.03.2019 19:33:20
Memo
Super Perfekt.
Besten Dank Bernd für die prompte Rückmeldung und die genommene Zeit.
Angenehmen Abend
Memo
AW: Letzter Benutzer der Datei speichern
05.03.2019 09:14:00
Memo
Hallo Bernd,
dein Code funktioniert tadellos. Ich hätte bitte noch zwei weitere Fragen:
Welchen Zusatzcode muss ich hinzufügen sodass der VBA mir auch die Besucher speichert?
Des Weiteren möchte ich die Zellen in der die Besucher und gespeicherte Benutzer aufgelistet werden sperren, sodass niemand Sie evtl. löschen kann.
Ich kann Sie zwar auch durch " Worksheets("Protokoll").Visible = False" verbergen, jedoch muss ich jedesmal den Code auf True setzen wenn ich sehen möchte wer zuletzt gespeichert oder besucht hat.
In geschützter Blattstatus bekomme ich eine Fehlermeldung sobald ich die Datei speichern möchte.
Kann ich diesen Error umgehen, sodass dieser trotz Blattschutz alle Besucher und Benutzer die speichern auflistet?
Habe ein jpg Datei hochgeladen wie ich mir es vorstelle.
Danke.
VG
Memo
Anzeige
AW: Letzter Benutzer der Datei speichern
06.03.2019 13:41:05
Bernd
Servus Memo,
wie sollen denn Besucher gespeichert werden, ohne dass man die Datei speichert und dadurch automatisch den Code ausführt? Das wird (zumindest in dieser Konstellation) nicht funktionieren.
Was die Sichtbarkeit angeht würde ich ggf. über eine Abfrage des Nutzers die Sichtbarkeit einstellen.
Als Ansatz:

Private Sub Workbook_Open()
If Environ("Username")  "Dein Name" Then
Sheets("Protokoll").Visible = xlVeryHidden
Else
Sheets("Protokoll").Visible = True
End If
End Sub

Allerdings müsstest du in diesem Fall auch den ersten Code in der ersten und letzten Zeile ergänzen.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Protokoll").Visible = True
With Sheets("Protokoll")
.Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = Environ("Username")
.Cells(.Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Value = Date
.Cells(.Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = Time
End With
Sheets("Protokoll").Visible = xlVeryHidden
End Sub
Grüße, Bernd
Anzeige
AW: Letzter Benutzer der Datei speichern
06.03.2019 16:55:16
Memo
Perfekt.
Besten Dank Bernd für die Unterstützung.
VG
Memo
;
Anzeige
Anzeige

Infobox / Tutorial

Letzter Benutzer der Datei speichern in Excel


Schritt-für-Schritt-Anleitung

Um den letzten Benutzer der Datei in Excel zu speichern, kannst du den folgenden VBA-Code verwenden. Dieser Code fügt den Benutzernamen, das Datum und die Uhrzeit in ein separates Arbeitsblatt namens "Protokoll" ein.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Suche im Projekt-Explorer nach "Diese Arbeitsmappe".
  3. Füge den folgenden Code in das Fenster "Diese Arbeitsmappe" ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    With Sheets("Protokoll")
        .Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = Environ("Username")
        .Cells(.Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Value = Date
        .Cells(.Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = Time
    End With
End Sub
  1. Schließe den VBA-Editor und speichere die Datei als Excel-Arbeitsmappe mit Makros (*.xlsm).
  2. Teste den Code, indem du die Datei speicherst. Du solltest nun den letzten Bearbeiter in der Zelle angezeigt bekommen.

Häufige Fehler und Lösungen

  • Fehler: "Protokoll" Arbeitsblatt nicht gefunden.

    • Lösung: Stelle sicher, dass ein Arbeitsblatt mit dem Namen "Protokoll" in deiner Datei existiert. Wenn nicht, erstelle es.
  • Fehler beim Speichern mit Blattschutz.

    • Lösung: Du kannst den Blattschutz temporär aufheben, bevor du die Daten speicherst. Füge dazu die Zeilen für das Ent- und Wiederherstellen des Schutzes in deinen Code ein.

Alternative Methoden

Eine alternative Methode, um den letzten Benutzer anzuzeigen, ist die Verwendung von Zellverweisen. Du kannst den Namen des letzten Benutzers auch direkt in eine bestimmte Zelle schreiben, anstatt in einem Protokollblatt. Hier ein Beispiel:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Sheets("DeinBlatt").Range("A1").Value = Environ("Username")
End Sub

Praktische Beispiele

Wenn du den letzten Bearbeiter in einer Zelle anzeigen möchtest, kannst du den folgenden Code verwenden, um den Namen und die Zeit in Zelle A1 anzuzeigen:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Sheets("DeinBlatt").Range("A1").Value = "Letzter Bearbeiter: " & Environ("Username") & " am " & Now
End Sub

Tipps für Profis

  • Sichtbarkeit der Protokolldaten steuern: Um die Sichtbarkeit des Protokolls zu steuern, kannst du den folgenden Code verwenden, um das Protokollblatt nur bestimmten Benutzern anzuzeigen:
Private Sub Workbook_Open()
    If Environ("Username") <> "Dein Name" Then
        Sheets("Protokoll").Visible = xlVeryHidden
    Else
        Sheets("Protokoll").Visible = True
    End If
End Sub
  • Zusätzliche Sicherheit: Um die Daten vor versehentlichem Löschen zu schützen, kannst du die Zellen sperren, die die letzten Benutzerinformationen enthalten.

FAQ: Häufige Fragen

1. Wie kann ich den letzten Bearbeiter in einer Zelle anzeigen? Du kannst den VBA-Code anpassen, um den Namen des letzten Bearbeiters in eine spezifische Zelle zu schreiben, wie im Abschnitt "Praktische Beispiele" gezeigt.

2. Kann ich auch sehen, wer die Datei zuletzt gespeichert hat? Ja, der VBA-Code speichert den Benutzernamen, das Datum und die Uhrzeit jedes Mal, wenn die Datei gespeichert wird. Du kannst diese Informationen nutzen, um zu sehen, wer zuletzt gespeichert hat.

3. Was passiert, wenn mehrere Benutzer gleichzeitig an der Datei arbeiten? In diesem Fall wird nur der Benutzer, der die Datei zuletzt speichert, in das Protokoll eingetragen. Es gibt jedoch keine Möglichkeit, die Änderungen der anderen Benutzer zu erfassen, es sei denn, sie speichern die Datei.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige