Wir haben eine Excel-Datei in unserem Netzwerk, die normalerweise von einer Person geöffnet wird und an der Änderungen vorgenommen werden. Andere Benutzer lassen die Datei im schreibgeschützten Modus geöffnet.
Gelegentlich öffnet eine andere Person als die erste Person, die für die Bearbeitung der Excel-Datei verantwortlich ist, diese Datei und übernimmt auf irgendeine Weise die Schreibfunktion für diese Datei, sodass die Person, die Änderungen vornehmen soll, diese Änderungen nicht speichern kann.
Dies ist seit geraumer Zeit der Fall und ich kann anscheinend keine Lösung dafür finden.
Irgendwelche Ideen, was los ist?
Office 2010
Windows 7 Pro x64
microsoft-excel
Markaway
quelle
quelle
Antworten:
Hier ist eine mögliche Lösung: Wählen Sie im Dialogfeld "Speichern unter" die Option "Extras" -> "Allgemeine Optionen", wählen Sie "Schreibgeschützt empfohlen" und speichern Sie.
Jedes Mal, wenn jemand die Datei öffnet, erhält er Folgendes:
Bringen Sie ihnen bei, auf „Ja“ zu klicken, mit Ausnahme der Person, die die Datei bearbeiten soll (oder ihrer Stellvertreterin, falls sie abwesend ist).
quelle
Ich habe einen anderen Ansatz für die nächste Situation gewählt. Es gibt eine Excel-Datenbank, zum Beispiel DataBase.xls und eine Excel-Vorlage Programs.xlt, die beide nicht freigegeben sind und sich in einem Verzeichnis eines Netzwerkservers / einer Netzwerkfestplatte befinden. Jeder Benutzer verwendet eine Kopie der Programmvorlage, also Programs1.xls für den ersten Benutzer und Programsn.xls für den n-ten Benutzer. Die Regeln sind:. Viele gleichzeitige Lesevorgänge sind gleichzeitig möglich. Ohne gleichzeitige Lesevorgänge ist nur ein Schreibvorgang möglich (um Lesevorgänge von "halb" aktualisierten Datensätzen zu vermeiden). Die Lese- und Schreibaktionen sind standardisiert und so kurz wie möglich
Die von mir gewählte Lösung ist ein Schiedsrichter / Schiedsrichter / Schiedsrichter / Schiedsrichter - ich nannte sie Referee.xls. Es handelt sich um eine gemeinsam genutzte Excel-Datei, die sich im selben Verzeichnis befindet und sehr klein ist: Sie besteht nur aus zwei Feldern - einem Lesezähler nRead und einem Schreibzähler nWrite. Jeder Benutzer, der auf die Datenbank zugreifen möchte, sendet dem Schiedsrichter eine Lese- oder Schreibanforderung.
Bei einer Leseanforderung prüft / wartet der Schiedsrichter, bis (mehr) keine Schreibaktionen mehr stattfinden (nWrite = 0), und gewährt dann dem Benutzer einen Lesevorgang, indem er den Zähler nRead um 1 erhöht. Nach Abschluss einer Leseaktion wird der nRead counter wird um 1 verringert.
Bei einer Schreibanforderung prüft / wartet der Schiedsrichter, bis keine Schreibaktionen mehr aktiv sind (nWrite = 0), danach prüft / wartet der Schiedsrichter, bis alle Leseaktionen ausgeführt sind (nRead = 0), und erteilt dann die Schreibanforderung und setze den nWrite-Zähler auf 1. Nachdem die Schreibaktion abgeschlossen ist, wird der Schreibzähler nWrite auf 0 gesetzt. Danach kann der Schiedsrichter neue Lese- und / oder Schreibanforderungen erteilen. Die Wartezeiten werden mit der Funktion "Sleep" in Lib "Kernel32" in Schritten von 1 Sekunde (1000 Millisekunden) implementiert. Die Schritte werden ebenfalls gezählt, und nach 6 Schritten / Sekunden ist eine Leseanforderung abgelaufen, und nach 10 Schritten / Sekunden ist eine Schreibanforderung abgelaufen. Dies hängt jedoch stark von vielen Faktoren ab und sollte in der Praxis gefunden werden.
Dies alles funktioniert sehr gut in einer Excel 2003, Windows XP-Umgebung mit maximal 14 gleichzeitigen Benutzern. Diese Benutzer sind Manager, die auf einer Fläche von 5000 Quadratkilometern an verschiedenen Orten arbeiten und das Tool täglich zum Aktualisieren von medizinischen Kompetenzinformationen, persönlichen Informationen, Terminen usw. für ihre Mitarbeiter verwenden (durchschnittlich 15 Mitarbeiter pro Manager).
quelle
Ich kann mir nur vorstellen, dass dies geschieht
quelle