Formulare von mehreren Nutzern bearbeiten lassen

Ich habe ein Formular entworfen, das verschiedene Personen über das Netzwerk ausfüllen. Dabei sollen die Formulare beim Speichern nummeriert werden, um das Überschreiben bereits ausgefüllter Formulare zu verhindern. Zudem wäre ein Bearbeitungsprotokoll hilfreich. Kann Excel das?

Mit einem Makro schaffen Sie es. Eine Lösung finden Sie auf der Heft-CD CHIP-Code EXPROT.

Wenn Sie lieber selbst programmieren, legen Sie zuerst das Formular mit den Eingabefeldern an. Markieren Sie nacheinander diese Felder und führen Sie jeweils »Format | Zellen« aus, um unter »Schutz« das Kästchen »Gesperrt« zu deaktivieren. Diese Befehlsfolge können Sie ab dem zweiten Mal mit den Tasten [Strg]+[Y] ausführen. Fügen Sie dem Formular mit der Symbolleiste »Formular« eine Makroschaltfläche hinzu und weisen Sie ihr das Makro »Sichern« zu. Geben Sie nun im VBA-Editor folgendes Listing ein:


Sub Sichern()
Dim Pfad1, Protfile, Aktfile
Dim Nummer
Dim Name, User
Dim Dat1, Dat2
Dat1 = ActiveWorkbook.Worksheets (äTabelle1ô).Cells(4, 3)
Dat2 = ActiveWorkbook.Worksheets (äTabelle1ô).Cells(6, 3)
Pfad1 = CurDir
Protfile = Pfad1 & ä\ô & äprot.xlsô
Workbooks.Open FileName:=Protfile
Nummer = Val(ActiveWorkbook.Worksheets(äProt-Tabô).Cells(1,2)) + 1
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(1, 2) = Nummer
Name = ActiveWorkbook.Worksheets (äProt-Tabô).Cells(1, 1)
User = Application.UserName
Aktfile = Pfad1 & ä\ô & Name & Nummer
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 1) = Nummer
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 2) = Aktfile
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 3) = Date
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 4) = Time
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 5) = User
æ
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 7) = Dat1
ActiveWorkbook.Worksheets(äProt-Tabô).Cells(Nummer + 2, 8) = Dat2
ActiveWorkbook.Save
ActiveWorkbook.Close
æ
ActiveWorkbook.SaveAs FileName:= Aktfile, FileFormat:=xlNormal, Password:=ôä, WriteResPassword:=ôä, _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Sub Auto_Open()
Application.CommandBars(äFileô). Controls(5).Enabled = False
Application.CommandBars(äFileô). Controls(4).Enabled = False
Application.CommandBars(äStandardô).Controls(3).Enabled = False
End Sub
Sub Auto_Close()
Application.CommandBars(äFileô). Controls(5).Enabled = True
Application.CommandBars(äFileô). Controls(4).Enabled = True
Application.CommandBars(äStandardô).Controls(3).Enabled = True
End Sub




Das erste Makro liest Felder aus dem Formular ein. Dann öffnet es PROT.XLS. In Zelle B1 von »Prot-Tab« steht die laufende Nummer, die das Makro um Eins erhöht und mit dem Namen aus Zelle A1 den Filenamen bildet. Nun füllt das Makro eine neue Zeile in der Protokolldatei aus und trägt neben Nummer und Namen auch Datum, Uhrzeit und den Namen des Users ein. Nach Schließen der Protokolldatei speichert das Makro die Formulardatei.

Die beiden Makros »Auto_Open« und »Auto_Close« verhindern, dass der Benutzer andere Speichervorgänge ausführen kann, indem sie die Menüpunkte »Speichern« sowie »Speichern unter« deaktivieren. Bei der Arbeit können Sie durch die gezielte Ausführung des Makros »Auto_Close« die Befehle wieder aktivieren. Auf dem Server schützen Sie die Formulardatei mit »Extras | Schutz | Blatt« und geben ihr das Dateiattribut »Nur lesen«. Im aktuellen Ordner müssen Sie noch die Datei PROT.XLS mit der Tabelle »Prot-Tab« anlegen und in Zelle »A1« den gewünschten Anfang des Dateinamens und in »B1« die Nummer eintragen.