HERBERS Excel-Forum - das Archiv

Thema: Schutz vor gleichzeitigem Bearbeiten der Exceldatei

Schutz vor gleichzeitigem Bearbeiten der Exceldatei
MartinoTinu
Hey zusammen

Ich habe letztens bei uns etwas interessantes gesehen unzwar haben wir ein Dokument das in unsere Firma sehr Heilig ist da dies auch von unserem Zeit System gebraucht wird um abzubuchen und in diesem Dokument kann man Ferien, Feiertage, Krankheit, usw. eintragen.
Da dieses Dokument so heilig ist kann dies aber nur von einer Person bearbeitet werden und sobald jemand anders es Probiert zu öffnen kommt einen msg Box die dir sagt das Max Mustermann dieses Dokument schon bearbeitet und man kann klicken das man es nur anschauen möchte und dann kann man nichts mehr bearbeiten. Dies möchte ich gerne auf ein anderes Dokument übertragen habe aber leider keine Ahnung wie das gemacht wurde kann das leider auch nicht nachschauen da der VBA Bereich Passwort geschützt ist.

Ich habe schon an einen Bespiel Code gearbeitet der ein LockFile.txt mit den Daten der Person (Name, Arbeitsort, PC_Name) usw. speichert und immer beim öffnen dieses Dokument überprüft (ob es jemand gerade bearbeitet / offen hat.

Dieser Funktioniert halt leider nur so halb unzwar hat er 2 grosse Probleme einer das dies mit dem nur anschauen nicht ganz Funktioniert.
Und ich möchte nicht das die ganze Zeit ein Dokument gelöscht / erstellt wird da sonst unsere IT durchdreht xD

Falls ihr meinen sehr schönen Code haben wollt oder kann ich ihn gerne noch Posten arbeite jetzt noch wenig an dem weiter aber falls jemand gerade schon eine Lösung hat oder es einen viel einfacheren weg gibt wäre ich euch sehr dankbar.
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
{Boris}
Hi,

so lange die Datei nicht explizit freigegeben ist, ist das doch ein "natürliches" Verhalten von Excel.

VG, Boris
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
MartinoTinu
Hi,

Alle Dateien müssen sich au dem SharePoint (OneDrive) befinden heisst sie sind allen freigegeben.

Lg Martin
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
ralf_b
kein Mensch benötigt "schönen Code", der auch noch nicht mal fertig ist.

Grundsätzlich ist es keine gute Idee sich an einer heiligen Kuh(Datei) vergreifen zu wollen wenn du dafür nicht autorisiert bist. Das Passwort ist genau dafür gedacht, das Leute, die nicht dran dürfen, die Fingerchen davon lassen.
Die beschriebene Funktion mit der Meldung das Jemand anders an der Datei arbeitet ist ein Standardverhalten wenn man im Netzwerk auf eine Datei zugreifen will, die bereits in Bearbeitung ist und nicht freigegeben wurde. Zumindest kenne ich das so. Somit brauchst du keinen extra Code um das Verhalten auf einer anderen Datei nachzubilden.
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
MartinoTinu
Hey

Glaube du hast mich nicht richtig verstanden ich möchte nix an der Heiligen Kuh machen ich will lediglich die Funktion kopieren damit meine Datei nicht kaputt geht.
Weil wenn in unserem SharePoint eine Datei von 2 Leuten bearbeitet wird hat SharePoint ein Problem damit und sagt dir dann das es zwei Unterschiedliche Dateien gibt und es ist immer wieder mühsam herauszufinden wer was bearbeitet hat und welche Datei neuer ist darum möchte ich das es nur eine Person bearbeiten darf und die Nächste muss warten oder kann nur was checken (Anschauen). Aber wäre ja einfach gewesen hätte ich den VBA Code vom anderen zu Kopieren und Fertig.

LG Martin
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
ralf_b
du hast Recht, habe dich anfangs falsch verstanden.
Du hast einen wichtigen Punkt bei der Problembeschreibung vergessen zu erwähnen. "Sharepoint "
Sharepoint bietet mehr Möglichkeiten, als reines Excel. Jede Änderung wird sofort gespeichert und kann als Version später angesehen und wiederhergestellt werden. (Versionsverlauf). Sharepoint bietet auch spezielle Möglichkeiten der Rechtevergabe. Dazu mußt du aber meist ein Admin sein.

Nachteil: VBA funktioniert nicht wenn man die Datei online/im Browser öffnet. Hier spielen die Powerapps/Flows eine Rolle, um gewisse Funktionalitäten zu realisieren.

Problematisch wird es erst wenn du eine Datei lokal öffnest und die dann wieder speichern möchtest ,wenn schon ein Anderer das selbe getan hat. Um Probleme damit zu verhindern muß man die Datei auschecken. Damit wird die Verwendungspriorität auf den Auscheckenden gesetzt.
Wenn du mit VBA arbeiten willst, dann hast du die Datei lokal(in der App) geöffnet ,d.h. eine lokale Kopie erstellt und diese geöffnet. Du arbeitest also nicht an der Originaldatei auf dem Sharepointserver. Und hier kommen dann auch die Synchronisierungsprobleme zu Stande.


AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
Oppawinni
Gleichzeitige Bearbeitung ist meines Wissens erst mit den neuesten Excel Versionen möglich und auch nur dann, wenn eine explizite Freigabe erfolgt ist und nicht jemand mit einer Version die Datei geöffnet hat, die gleichzeitige Bearbeitung nicht unterstützt.
D.h. dass die gleichzeitige Bearbeitung ohne besondere Maßnahme nicht zulässig ist.
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
MartinoTinu
Hier ist der Code woran ich momentan Arbeite damit ihr vielleicht mehr wisst was ich meine:
Private Sub Workbook_Open()

Dim lockFilePath As String
Dim computerName As String
Dim allowedComputerName As String
Dim fileNum As Integer
Dim currentUser As String

' Pfad und Computername sind direkt im Code integriert
lockFilePath = "Pfad vom LockFile.txt"
allowedComputerName = "PC_NAME"

' Ermittle den aktuellen Computernamen
computerName = Environ$("COMPUTERNAME")
' Ermittle den aktuellen Benutzernamen
currentUser = Application.UserName

' Überprüfe, ob wir uns auf dem erlaubten Computer befinden
If computerName <> allowedComputerName Then
MsgBox "Diese Datei darf nur auf dem autorisierten Computer (" & allowedComputerName & ") geöffnet werden.", vbCritical
ThisWorkbook.Close SaveChanges:=False
Exit Sub
End If

' Überprüfe, ob die Datei bereits geöffnet ist
If Dir(lockFilePath) <> "" Then
MsgBox "Diese Datei wird bereits bearbeitet und kann nur im schreibgeschützten Modus geöffnet werden.", vbInformation
ThisWorkbook.ChangeFileAccess xlReadOnly
Exit Sub
Else
' Erstelle die Lock-Datei und speichere den Benutzer- und Computernamen
fileNum = FreeFile()
Open lockFilePath For Output As fileNum
Print #fileNum, "Locked by " & currentUser & " on " & computerName
Close fileNum
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lockFilePath As String

' Stelle sicher, dass der Pfad korrekt ist
lockFilePath = "C:\\Users\\P00100628\\BLS AG\\PRJ-BBKB-Refit_Autopendel - Dokumente\\Extern\\Refit Autopendel Engineering\\06_BR_Boenigen\\RBDe566_II_ABT_BT_Refit\\STW\\Leitungsbeschriftungen\\Lock\\LockFile.txt"

' Versuche, die Lock-Datei zu entfernen
If Dir(lockFilePath) <> "" Then
Kill lockFilePath
End If
End Sub
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
MartinoTinu
Es ist nicht ganz Gleichzeitiges Bearbeiten das Problem ist mehr was danach mit dem SharePoint Passiert.
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
Oppawinni
Ich schätze, dass du da etwas tun willst, was weit außerhalb deiner Kompetenz liegt.
Du redest von Sharepoint und setzt dahinter in Klammern OneDrive.
Das sind aber schon zwei völlig verschiedene Systeme.
Lies dazu vielleicht mal das:
https://support.microsoft.com/de-de/office/teilen-von-sharepoint-dateien-oder-ordnern-1fe37332-0f9a-4719-970e-d2578da4941c
Wende dich ggf. mal mit deinem Problem an eure EDV. Die sollten, falls die, anders als ich, verstehen, was du erreichen willst.
AW: Schutz vor gleichzeitigem Bearbeiten der Exceldatei
MartinoTinu
Wir verwenden SharePoint da wir ein Unternehmen sind, aber brauchen OneDrive zum synchronisieren anders geht das mit unseren Programmen nicht.
Sonst kannst du das hier lesen:
https://support.microsoft.com/de-de/office/synchronisieren-von-sharepoint-dateien-mit-dem-onedrive-synchronisierungsclient-groove-exe-59b1de2b-519e-4d3a-8f45-51647cf291cd