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 hCHIP-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.Work¢ sheets (äTabelle1ô).Cells(4, 3) Dat2 = ActiveWorkbook.Work¢ sheets (ä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.Work¢ sheets (ä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, FileFor¢ mat:=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(äStan¢ dardô).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.