wir haben bei uns in der Firma das folgende Problem: Es gibt Excel-Dateien, auf die mehrere Leute zugreifen sollen. Allerdings müssen nur die Projektleiter Änderungen vornehmen.
Ideal wäre also folgende Möglichkeit: Doppelklick auf die Datei => Pop-Up mit zwei Schaltflächen mit der Frage "Schreibgeschützt" oder "Zur Bearbeitung" öffnen.
Es soll kein Passwort verwendet werden. Im Idealfall ist die "Standard-Antwort" schreibgeschützt.
Gibt es hier etwas einfaches? Von Haus aus habe ich nichts gefunden.
danke erstmal; das ist allerdings noch nicht so richtig das, was ich suche. Vielleicht oder wahrscheinlich habe ich mich auch was unklar ausgedrückt.
Ihr kennt ja die Funktion, dass eine Excel-Datei komplett mit einem Passwort geschützt sein soll. Dann wird man ja beim Öffnen aufgefordert das Passwort einzugeben. Statt dieser Frage soll nur kommen "schreibgeschützt öffnen" oder "zur Bearbeitung".
Heißt, wenn Mitarbeiter A das Dokument öffnet und "schreibgeschützt öffnen" wählt und danach Mitarbeiter B das Dokument öffnet, kann er es bearbeiten. So in die Richtung stelle ich mir das vor.
meines Wissens ist es nicht möglich, bereits vor dem Öffnen einer Excel-Mappe per VBA oder ähnlichem seine eigenen Dialoge zu verwenden. Kennst Du die Funktion "Arbeitsmappe freigeben"? Vielleicht ist das eine Alternative für Dich?
vor einiger Zeit gab es in einem Forum diesen Code, der prüft, ob eine Datei bereits geöffnet ist:
Code:
Private Declare Function lOpen Lib "kernel32" Alias "_lopen" _ (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long Private Declare Function lClose Lib "kernel32" _ Alias "_lclose" (ByVal hFile As Long) As Long Private Const OF_SHARE_EXCLUSIVE = &H10 Private Function FileIsOpen(strFullPath_FileName As String) As Boolean Dim hdlFile As Long Dim lastErr As Long hdlFile = -1 hdlFile = lOpen(strFullPath_FileName, OF_SHARE_EXCLUSIVE) If hdlFile = -1 Then lastErr = Err.LastDllError Else lClose (hdlFile) End If FileIsOpen = (hdlFile = -1) And (lastErr = 32) End Function Sub CheckFileOpen() If FileIsOpen("Full File Name") Then MsgBox "File Is open" Else MsgBox "File Is Not open" End If End Sub
Ohne Basiskenntnisse mit API's dürfte es schwierig sein.
mfg
(es gibt eine weitere Variante, eine Datei mit OPEN fileFOR INPUT zu öffnen und auf "lock" zu prüfen)
folgender Code kommt in das schon vorhandene VBA-Modul 'DieseArbeitsmappe':
' ************************************************************** ' Modul: DieseArbeitsmappe Typ = Element der Mappe(Sheet, Workbook, ...) ' **************************************************************
OptionExplicit
PrivateSub Workbook_Open() If MsgBox("Schreibgeschützt öffnen?", vbYesNo + vbQuestion) = vbYes Then Me.ChangeFileAccess xlReadOnly EndIf EndSub
11.12.2017, 16:31 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2017, 11:47 von Rabe.)
Hi,
Du könntest die Datei auch mit Schreibschutzempfehlung abspeichern, dann kommt beim Start immer die Nachfrage: "Der Autor möchte gerne, daß Sie diese Datei schreibgeschützt öffnen!" mit den Buttons "Schreibschutz" und "Bearbeiten".
Das geht so:
"Datei" - "Speichern unter" - Pfad auswählen, Name eingeben - unten in diesem Dateispeicherfenster das "Tools" anklicken und dort dann "Allgemeine Optionen" und dann den Haken setzen bei "Schreibschutz empfehlen".
Was mir noch einfällt; gibt es eine Möglichkeit bei Deinem Script noch hinzufügen, dass diese Meldung bei bestimmten Personen (z.B. Projektleiter, Abteilungsleiter) nicht kommt? Wären so um die 10-15 Personen.