Excel Änderungen live anzeigen für andere Nutzer
Hallo,
ist es möglich, dass wenn jemand Änderungen in einer Excel macht, andere Nutzer diese sofort live sehen wenn sie die Datei auch geöffnet haben? Oder müssen die die Datei dafür neu öffnen?
Viele Grüße
crack
ist es möglich, dass wenn jemand Änderungen in einer Excel macht, andere Nutzer diese sofort live sehen wenn sie die Datei auch geöffnet haben? Oder müssen die die Datei dafür neu öffnen?
Viele Grüße
crack
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 249949
Url: https://administrator.de/forum/excel-aenderungen-live-anzeigen-fuer-andere-nutzer-249949.html
Ausgedruckt am: 06.04.2025 um 10:04 Uhr
10 Kommentare
Neuester Kommentar
Moin,
siehe: Excel07 Excel-Datei von mehreren Arbeitsplätzen öffnen und automatisch aktualisieren
Die Makro-Variante könnte so aussehen:
Man erstelle ein Excel Dokument mit Makros (*.xlsm) in welchem man folgenden Code in den Abschnitt DieseArbeitsmappe im VBA-Editor (ALT-F11) einfügt:
Dieses Dokument speichert man nun auf einem Netzlaufwerk. Der Bearbeiter öffnet das Dokument als erstes und hat damit Schreibzugriff auf die Arbeitsmappe. Alle weiteren Clients öffnen dann das Workbook im Schreibgeschützen Modus, und nur hier startet dann das Makro welches eine Aktualisierung der Arbeitsmappe alle X Sekunden (im Beispielcode alle 5 Sekunden) veranlasst. Speichert der Bearbeiter nun das Workbook sind kurz darauf die Änderungen an den Clients zu sehen.
Grüße Uwe
siehe: Excel07 Excel-Datei von mehreren Arbeitsplätzen öffnen und automatisch aktualisieren
Die Makro-Variante könnte so aussehen:
Man erstelle ein Excel Dokument mit Makros (*.xlsm) in welchem man folgenden Code in den Abschnitt DieseArbeitsmappe im VBA-Editor (ALT-F11) einfügt:
Private Sub Workbook_Open()
If ThisWorkbook.ReadOnly = True Then
UpdateTimer
End If
End Sub
Sub UpdateTimer()
Application.OnTime (Now() + TimeValue("00:00:05")), "DieseArbeitsmappe.UpdateTimer"
On Error Resume Next
ThisWorkbook.UpdateFromFile
End Sub
Grüße Uwe
Zitat von @crack24:
Alle Änderungen eines Tages automatisch farbig zu kennzeichnen ist wahrscheinlich nicht möglich oder?
man kann ein Makro hinterlegen das bei jeder Zelländerung z.B. die Hintergrundfarbe der jeweiligen Zelle automatisch ändert(Worksheets_OnChange-Event). Diese Zellen müsste man dann nur am Anfang eines neuen Tages wieder zurücksetzen. Möglich ist vieles ....Alle Änderungen eines Tages automatisch farbig zu kennzeichnen ist wahrscheinlich nicht möglich oder?
Einfacher lässt sich das natürlich mit einem freigegebenen Workbook machen, das hat diese Funktion ja schon integriert (Änderungen nachverfolgen) - wie unter obigem Link beschrieben.
So, hier mal ein Beispiel das geänderte Zellen gelb hinterlegt und beim Öffnen nachfragt ob die Markierungen alle gelöscht werden sollen. Hier noch das Demo-Sheet dazu: mark_edited_cells_249949.xlsm / Kommentare befinden sich im Code
Viel Erfolg
Grüße Uwe
'Variable enthält den zwischengespeicherten Wert der aktiven Zelle(n)
Dim currentCellValue As String
'Markerfarbe
Dim markerColor As Long
'Beim Öffnen des Workbooks checken ob es schreibgeschützt geöffnet wurde
Private Sub Workbook_Open()
'Farbe der Marker festlegen
markerColor = RGB(255, 255, 0)
If ThisWorkbook.ReadOnly = True Then
'Workbook schreibgeschützt, starte die 'UpdateTimer' Prozedur
UpdateTimer
Else
'Workbook ist nicht schreibgeschützt, Frage ob alle Tagesmarkierungen entfernt werden sollen
If MsgBox("Möchten sie die Tagesmarkierungen entfernen?", vbQuestion Or vbYesNo, "Tagesmarkierungen") = vbYes Then
ClearMarkers
End If
End If
End Sub
'Bei Zelländerungen den Wert der Zelle auf Änderung überprüfen und dann entsprechend farbig markieren
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Not IsEmpty(Target.Value) Then
If Target.Cells(1, 1).Value <> currentCellValue Then
Target.Cells(1, 1).Interior.Color = markerColor
End If
Else
If currentCellValue <> "" Then
Target.Cells(1, 1).Interior.Color = markerColor
End If
End If
End Sub
'Aktuellen Wert der aktivierten Zelle zwischenspeichern um Zelländerungen feststellen zu können
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
currentCellValue = Target.Cells(1, 1).Value
End Sub
'Update-Timer wird gestartet wenn das Workbook schreibgeschützt geöffnet wird
Sub UpdateTimer()
'Update-Routine alle 5 Sekunden erneut aufrufen
Application.OnTime (Now() + TimeValue("00:00:05")), "DieseArbeitsmappe.UpdateTimer"
On Error Resume Next
'Update druchführen
ThisWorkbook.UpdateFromFile
End Sub
'Tagesmarkierungen entfernen
Sub ClearMarkers()
Dim ws As Worksheet, cell As Range
For Each ws In ThisWorkbook.Worksheets
For Each cell In ws.UsedRange
If cell.Interior.Color = markerColor Then
cell.Interior.ColorIndex = xlColorIndexNone
End If
Next
Next
End Sub
Grüße Uwe
Hallo Oliver,
Grüße Uwe
Zitat von @crack24:
Funktioniert super. Zwei Fragen habe ich noch.
Kann man irgendwie auch den Windows User abfragen, so dass die Änderungen eines bestimmten Users nicht markiert werden?
yip s. Code unten Zeile 20, dort kannst du den Namen ändern, dann werden Änderungen dieses Users nicht markiert.Funktioniert super. Zwei Fragen habe ich noch.
Kann man irgendwie auch den Windows User abfragen, so dass die Änderungen eines bestimmten Users nicht markiert werden?
Kann man statt der MsgBox("Möchten sie die Tagesmarkierungen entfernen?") auch einen Button in einer Zelle
platzieren der die Markierungen entfernt?
Kannst du mit diesem Code machen, du musst dann nur noch deinen Button erstellen und Ihm das Makro **ClearMarkers()* zuweisen.platzieren der die Markierungen entfernt?
'Variable enthält den zwischengespeicherten Wert der aktiven Zelle(n)
Dim currentCellValue As String
'Markerfarbe
Dim markerColor As Long
'Beim Öffnen des Workbooks checken ob es schreibgeschützt geöffnet wurde
Private Sub Workbook_Open()
'Farbe der Marker festlegen
markerColor = RGB(255, 255, 0)
If ThisWorkbook.ReadOnly = True Then
'Workbook schreibgeschützt, starte die 'UpdateTimer' Prozedur
UpdateTimer
End If
End Sub
'Bei Zelländerungen den Wert der Zelle auf Änderung überprüfen und dann entsprechend farbig markieren
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
' Nur ausführen wenn User nicht 'Werner' heißt markiere Änderungen
If Application.UserName <> "Werner" Then
On Error Resume Next
If Not IsEmpty(Target.Value) Then
If Target.Cells(1, 1).Value <> currentCellValue Then
Target.Cells(1, 1).Interior.Color = markerColor
End If
Else
If currentCellValue <> "" Then
Target.Cells(1, 1).Interior.Color = markerColor
End If
End If
End If
End Sub
'Aktuellen Wert der aktivierten Zelle zwischenspeichern um Zelländerungen feststellen zu können
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
currentCellValue = Target.Cells(1, 1).Value
End Sub
'Update-Timer wird gestartet wenn das Workbook schreibgeschützt geöffnet wird
Sub UpdateTimer()
'Update-Routine alle 5 Sekunden erneut aufrufen
Application.OnTime (Now() + TimeValue("00:00:05")), "DieseArbeitsmappe.UpdateTimer"
On Error Resume Next
'Update druchführen
ThisWorkbook.UpdateFromFile
End Sub
'Tagesmarkierungen entfernen
Sub ClearMarkers()
Dim ws As Worksheet, cell As Range
For Each ws In ThisWorkbook.Worksheets
For Each cell In ws.UsedRange
If cell.Interior.Color = markerColor Then
cell.Interior.ColorIndex = xlColorIndexNone
End If
Next
Next
End Sub