Automatischen Eintrag beim Speichern generieren

Hallo zusammen,

Wie kann ich in einem bestehenden Excel-Dokument, an dem JEDER in unserer Firma arbeiten kann, einen Eintrag am Ende des Dokumentes erzeugen (Revision History) der denjenigen anhand seines „Windows Login“ identifiziert (mit Datum & Uhrzeit der Änderung). (OS in unserer Fa. ist Windows XP)

Grund dafür ist ganz einfach: Ich bin „Eigentümer“ eines gewissen Dokumentes und möchte gerne wissen WER meine Dokumente „verbessert“.

SUPER wäre es wenn ihr mir auch sagen könnt wie man das auch mit einem Word Dokument machen kann.

Vielen Dank im Voraus für eure Anregungen/Lösungen.

Gruss, Mike

PS.
Ich bin absoluter Neuling auf dem VB Terain und daher fast unwissend :frowning: … also setz bitte keine großen Kenntnisse bei mir voraus.

Hi Mike,

Wie kann ich in einem bestehenden Excel-Dokument, an dem JEDER
in unserer Firma arbeiten kann, einen Eintrag am Ende des
Dokumentes erzeugen (Revision History) der denjenigen anhand
seines „Windows Login“ identifiziert (mit Datum & Uhrzeit der
Änderung). (OS in unserer Fa. ist Windows XP)

Lege dir eine Zusatztabellenblatt an, hier „Tabelle3“, A1: Datum, B1: Zeit, C1: Name, dann
Alt+F11, Doppelklick auf DiesArbeitsmappe", Code reinkopieren, ggfs. abändern
In 2Tabelle3" wird bei jedem Speichern alles protokolliert. Einblenden kannst nur du mit dem Makro „Einblenden“. Bei jedem Speichern und/oder Schliessen wird „Tabelle3“ versteckt. Mit Makro "Ausblenden kannst du sie auch ausblenden.

Option Explicit
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
Worksheets("Tabelle3").Visible = xlVeryHidden
End Sub

Private Sub Workbook\_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim zei As Long
With Worksheets("Tabelle3")
 zei = .Range("A65536").End(xlUp).Row + 1
 .Range("A" & zei).Value = Date
 .Range("B" & zei).Value = Time
 .Range("C" & zei).Value = Application.UserName
 .Visible = xlVeryHidden
End With
End Sub

Im Editor auf Einfügen–Modul, dorthinein folgenden Code, abändern, Editor schliessen

Option Explicit
Sub Ausblenden()
Worksheets("Tabelle3").Visible = xlVeryHidden
End Sub

Sub Einblenden()
If Application.UserName "DeinName" Then Exit Sub
Worksheets("Tabelle3").Visible = True
End Sub

SUPER wäre es wenn ihr mir auch sagen könnt wie man das auch
mit einem Word Dokument machen kann.

K.A. von Word. Gibts da (oder auch in Ecel?) nicht die Möglichkeit in Optionen „Änderungen verfolgen“ einzustellen?
Gruß
Reinhard

Hi Reinhard,

ersteinmal vielen Dank für die schnelle Antwort.
Habe ich soweit ausprobiert und Excel meckert nicht beim Speichern. Soweit so gut, aber wenn ich die Datei öffne, dann ist meine „Tabelle3“ weg. Das ist ja auch ok, aber ich kann sie mit dem Makro „Einblenden“ nicht wieder sichtbar machen.
Das Excel welches ich benutze ist von 2003 mit SP2.

Hast du eine Idee?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ersteinmal vielen Dank für die schnelle Antwort.
Habe ich soweit ausprobiert und Excel meckert nicht beim
Speichern. Soweit so gut, aber wenn ich die Datei öffne, dann
ist meine „Tabelle3“ weg. Das ist ja auch ok, aber ich kann
sie mit dem Makro „Einblenden“ nicht wieder sichtbar machen.
Das Excel welches ich benutze ist von 2003 mit SP2.

Hi Mike,
ich hatte was vergessen. Grundsätzlich macht ja das „Verstecken“ nur Sinn wenn es nicht wieder eingeblendet werden kann. Deshalb mussst du noch die makros der datei mit Passwort schützen. Also im Editor Rechtsklick links auf"BA-Projekt (Dateiname)", dann Eigenschaften – Schutz und passwort vergeben.

Zu deiner Nachfrage, ich habe den Code nur kurz getestet, also nicht alle Möglichkeiten durchgespielt. Aber wenn du das makro „Einblenden“ ausführst, muss dann Tabelle3 sichtbar sein.

Änder mal den Code auf:

Sub Einblenden()
Worksheets(„Tabelle3“).Visible = True
End Sub

und führe das Makro aus. Danach muss Tabelle3 sichtbar sein und es gibt ein Problem mit der Abprüfung des Benutzernamens in der „alten“ Einblenden-Funktion.
Gruß
Reinhard

Hi Mike,

Wie kann ich in einem bestehenden Excel-Dokument, an dem JEDER
in unserer Firma arbeiten kann, einen Eintrag am Ende des
Dokumentes erzeugen (Revision History) der denjenigen anhand
seines „Windows Login“ identifiziert (mit Datum & Uhrzeit der
Änderung). (OS in unserer Fa. ist Windows XP)

Lege dir eine Zusatztabellenblatt an, hier „Tabelle3“, A1:
Datum, B1: Zeit, C1: Name, dann
Alt+F11, Doppelklick auf DiesArbeitsmappe", Code reinkopieren,
ggfs. abändern
In 2Tabelle3" wird bei jedem Speichern alles protokolliert.
Einblenden kannst nur du mit dem Makro „Einblenden“. Bei jedem
Speichern und/oder Schliessen wird „Tabelle3“ versteckt. Mit
Makro "Ausblenden kannst du sie auch ausblenden.

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(„Tabelle3“).Visible = xlVeryHidden
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
Dim zei As Long
With Worksheets(„Tabelle3“)
zei = .Range(„A65536“).End(xlUp).Row + 1
.Range(„A“ & zei).Value = Date
.Range(„B“ & zei).Value = Time
.Range(„C“ & zei).Value = Application.UserName
.Visible = xlVeryHidden
End With
End Sub

Im Editor auf Einfügen–Modul, dorthinein folgenden Code,
abändern, Editor schliessen

Option Explicit
Sub Ausblenden()
Worksheets(„Tabelle3“).Visible = xlVeryHidden
End Sub

Sub Einblenden()
If Application.UserName „DeinName“ Then Exit Sub
Worksheets(„Tabelle3“).Visible = True
End Sub

SUPER wäre es wenn ihr mir auch sagen könnt wie man das auch
mit einem Word Dokument machen kann.

K.A. von Word. Gibts da (oder auch in Ecel?) nicht die
Möglichkeit in Optionen „Änderungen verfolgen“ einzustellen?
Gruß
Reinhard

Hallo Reinhard,

also es funzt alles wie gewollt, nur speichert er mir NICHT den eingeloggted UserNamen sondern es scheint also würde er den Coputernamen oder die Domäne speichern an der ich mich anmelde.

Grüße, Mike

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

also es funzt alles wie gewollt, nur speichert er mir NICHT
den eingeloggted UserNamen sondern es scheint also würde er
den Coputernamen oder die Domäne speichern an der ich mich
anmelde.

Hi Mike,
gibt da wohl 2 Namen

Sub Usernamen()
Dim a, b
 ' Excel Username
a = Application.UserName
 ' Windows Username
b = Environ("Username")
MsgBox a
MsgBox b
End Sub

Gruß
Reinhard