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.