Hollo Timo,
 
 lege in MS-Word ein Dokument an und öffne VBA. Im Projektfenster (i.Allg. links oben) findest du so etwas wie einen Verzeichnisbaum und darin eine Zeile mit „Project (Dein Dokument)“. Wenn du diese anklickst erhältst du eine Zeile mit „Microsoft Word Objekte“ und weiter darunter „ThisDocument“. Klickst du dieses doppelt an, wird das Code-Fenster geöffnet. Lege zum Test ein banales Programm an und speichere dein Dokument, z.B.
    Sub Document_Close()
    MsgBox "Schließen"
    End Sub
 Wenn du das Dokument schließt, wird das Programm ausgeführt, bevor es tatsächlich geschlossen wird.
 
 Sei „X“ der Pfad zum Arbeitsverzeichnis auf dem Server. Setzt du keinen Server ein, sei es der Pfad zum Arbeitsverzeichnis auf dem Einzelplatzrechner (z.B. „C:\Vorlagen“). Sei „LfdNrVorlage1.Dat“ die Datei, in der die letzte verwendete Nummer gespeichert ist. Dann kannst du mit 
    Open “X\ LfdNrVorlage1.Dat“ For Input As #1
       Input #1, LfdNr
    Close #1
 die gespeicherte Nummer in String-Variable „LfdNr“ holen.
 Dazu muss die Datei natürlich existieren, sonst gibt es eine Fehlermeldung. Am Einfachsten legst du deshalb vorher mit einem eigenen Programm diese Datei an, z.B.:
    Sub Dateiintitialisierung ()
    Open “X\ LfdNrVorlage1.Dat“ For Output As #1
       Write #1, “0”
    Close #1
    End Sub
 
 Wenn du diese Nummer z.B. an eine bestimmte Stelle im Dokument einfügen willst, erstelle in der Vorlage eine Textmarke, z.B. mit dem Namen „Nummer“. Um die zu verwendende Nummer einzutragen, ist die gelesene zunächst um 1 zu erhöhen und wieder zu speichern. Insgesamt als einfache Lösung ergibt sich z.B.:
 
    Sub Document_Close()
    ’Prüfung, ob das Dokument ordnungsgemäß abgeschlossen werden soll
    a = MsgBox ("Dokument mit laufender Nummer versehen? ",”Laufende Nummer”, vbYesNo")
    If a = vbNo Then Exit Sub ’d.h. Dokumentenbearbeitung wurde abgebrochen
    Open “X\ LfdNrVorlage1.Dat“ For Input As #1 ’letzte Nummer holen
       Input #1, LfdNr
    Close #1
    LfdNr = Trim(Str(Val(LfdNr) + 1)) ‘um 1 erhöhen und Leerzeichen entfernen
    Open “X\LfdNrVorlage1.Dat“ For Output As #1 ‘verwendete Nummer speichern
       Write #1, LfdNr
    Close #1
    ActiveDocument.Bookmarks("Nummer").Select ‘Textmarke ansteuern und LfdNr einsetzen
         With Selection
             .Collapse direction:=wdCollapseEnd
             .InsertAfter LfdNr
         End With
    ActiveDocument.Name=LfdNr + ”_” + ActiveDocument.Name ‘z.B. LfdNr vor den Dokumentennamen setzen
    ActiveDocument.Save ‘Dokument speichern 
    End Sub
 
 Ich habe das Programm nicht getestet. Die Anpassung an deine Bedürfnisse solltest du selbst machen. 
 Viel Erfolg
 Holger
 
 
 
 
 Timo schrieb am 09.11.2007 09:19:23:
 
 Hallo!
 
 Erstmal danke für deine Antwort!
 Da ich leider noch nicht viel erfahrung mit VBA habe würde mich Interessieren wie das genau aussieht mit "Sub Document_Close", kannst du mir da vielleicht ein beispiel schreiben?
 
 Du schreibst:
 
 'die nächste Nummer aus der Serverdatei holen und dem Dokument/Dokumentennamen vor der tatsächlichen Speicherung hinzufügen (ggf. unter Nutzung des FileSystemObject). '
 
 Wie soll das aussehen? Wie kann ich die Nummer aus der Serverdatei hohlen? Also ich kenn mich da wirklich nicht gut aus und hoffe auf weitere unterstützung :) 
 
 MfG
 
 Timo
 
 Holger schrieb am 08.11.2007 11:19:30:
 
 Hallo Timo, 
 ein zusätzliches Problem kann entstehen, wenn mehrere Nutzer gleichzeitig die Vorlage holen und einer von ihnen sie nicht verwendet. Denn dann kann tatsächlich eine Lücke in der Zahlenfolge entstehen.
 Deshalb sollte die Nummernvergabe zweckmäßigerweise auf dem Server bei der Speicherung erfolgen. Dazu würde ich dort ein Datei anlegen, die die letzte benutzte oder die nächste zu nutzende Nummer enthält. In der "Sub Document_Close" (unter Microsoft Word Objekte - ThisDocument) kann man dann feststellen, ob das Dokument mit "Abbrechen" oder "Speichern" beendet wurde und im Falle, dass es gespeichert werden soll, die nächste Nummer aus der Serverdatei holen und dem Dokument/Dokumentennamen vor der tatsächlichen Speicherung hinzufügen (ggf. unter Nutzung des FileSystemObject). 
 Bei einem Ein-Platz-System kannst du die Datei auch auf dem Einzelrechner führen.
 Ich habe das Programm nicht ausprobiert, hoffe aber, dass du damit klar kommen kannst.
 Viel Erfolg 
 Holger
 
 Timo schrieb am 08.11.2007 09:02:27:
 
 Hallo zusammen!
 
 Ich bin in der Ausbildung im 2ten Lehrjahr und habe folgende aufgabe bekommen:
 
 In der Firma gibt es dokumente , z.B. Sonderfreigaben, die soganannte Laufnummern haben. Ich habe nun die aufgabe das wenn der Mitarbeiter (User) die Vorlage dieses Dokumentes öffnet die Aktuelle nummer angezeigt bekommt!
 Das heißt ich muss aus einem anderen Dokument die nummer "hohlen" und am besten direkt um 1 erhöhen. Beide dokumente befinden sich auf einem Server!
 Weitergehend muss sichergestellt sein das wenn der User das dokument öffnet und wieder schließt ohne es zu verwenden nicht die Nummer gespeichert wird und beim nächsten aufrufen wieder eine neue nummer angezeigt wird, und somit die alte nummer nicht gebraucht wurde und verloren geht!
 
 Ich sitzte nun schon sehr lange an dieser aufgabe (4Wochen) und habe noch keine genaue lösung gefunden!
 
 Der einzige link betreff Laufnummer mittels VBA ist folgener:
 
 http://mypage.bluewin.ch/reprobst/WordFAQ/Kollerat.htm#Kollerat06
 
 Das was dort drin steht funktioniert soweit wunderbar, dennoch ist das nicht die lösung!
 
 Vielleicht kennt ihr ja schon eine fertige Software die soetwas macht, die zu kaufen ist auch kein problem , ich muss das programm dafür nicht unbedingt alleine schreiben ;)
 
 Ich hoffe auf Schnelle antworten und bedanke mich schonmal im Vorraus!
 
 MfG
 
 Timo     |