Supportnet Computer
Planet of Tech

Supportnet / Forum / Textverarbeitung

automatische Nummerierung bei neuen Dokumenten





Frage

Hallo liebe Supporter, ich schlage mich jetzt leider schon seit einigen Tagen mit folgendem Problem rum: Ich möchte ein Dokument (oder besser eine dot-Vorlage) erstellen, die mir immer eine fortlaufende Nummer z.B. in der Überschrift für jedes neue Dokument erstellt. (Das Format ist erstmal egal... z.B. 00001, 00002 usw.) Ich habe da keinen wirklichen Weg mittels Makro oder so gefunden. Hat da jemand vielleicht eine rettende Idee? (Makro oder sonst was?!?) Wichtig ist mir dabei allerdings, daß ich eben nicht mehr selbst auf die Nummerierung achten muß und (wenn das auch geht!?!) daß ich ggf. den "Nummernkreis" (dauerhaft) ändern, d.h. nächstes Jahr z.B. eine andere Nummerierung einstellen kann. Vielen herzlichen Dank, Dennis

Antwort 1 von piano

Hallo
Hier vielleicht die Lösung:

Sub Weiterzählen()
'
   Dim Zähl
   
   ChangeFileOpenDirectory _
      "G:\Dokumente und Einstellungen\xxxx\Anwendungsdaten\Microsoft\Vorlagen\"
   Documents.Open FileName:="test.dot", ConfirmConversions:=False, ReadOnly:= _
      False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
      "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
      Format:=wdOpenFormatAuto, XMLTransform:=""
   Selection.GoTo What:=wdGoToBookmark, Name:="LfdNr"
   With Selection.Find
      Zähl = Val(Selection) + 1
      Selection.TypeText Text:=Zähl
   End With
   Selection.TypeParagraph
   ActiveDocument.Save
   ActiveDocument.Close
   Documents.Add Template:= _
      "G:\Dokumente und Einstellungen\xxxx\Anwendungsdaten\Microsoft\Vorlagen\test.dot" _
      , NewTemplate:=False, DocumentType:=0
End Sub


Dieser Makro (in normal.dot) hat eine Vorlage test.dot als Basis. In dieser gibt es die Textmarke LfdNr mit dem Anfangswert 0.
Die Vorlage wird gelesen, der Zähler fortgeschrieben und dann ein neues Dokument mit dieser Vorlage erstellt.
Du brauchst nur die Pfade und ev. den Textmarkennamen ändern.

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.


Antwort 2 von Dennis Galander

Hi Piano,

also ich habe das Ding jetzt mal ausprobiert. Dabei ergab sich noch ein kleines Problem:

die Textmarke wird offensichtlich beim Schreiben des neuen Wertes überschrieben (die TypeText-Methode überschreibt den Selection-Bereich, damit verschwindet die Textmarke), so daß beim zweiten Aufruf des Makros der Fehler erscheint, daß die Textmarke nicht vorhanden sei.

Leider habe ich mit Word (noch) nicht genug Erfahrung, um jetzt zu wissen, wie ich das Problem umgehen kann. Ich habe leider keine Möglichkeit gefunden, den "Inhalt" der Textmarke zu ersetzen. Und leider habe ich auch nicht herausgefunden, wie ich die Textmarke danach KORREKT wieder einfügen kann.

Hast Du da vielleicht noch einen Tipp?

Trotzdem ersteinmal vielen Dank für die Hilfe.

Gruß
Dennis

P.S. Das Attribut XMLTransform gehört zu welcher WinWord-Version? Ich habe OfficeXP... ich weiß, daß diese Option nicht wichtig ist. Nur rein interessenhalber!

Antwort 3 von piano

muß leider jetzt weg, Tip kommt Freitag

Antwort 4 von Dennis Galander

Naja,

bloß keine Eile! ;)

Dennis

Antwort 5 von piano

Hier, das sollte funktionieren:
(bei mir ging die obige Version auch, kann es aber auch nicht mehr nacvollziehen, warum!)
Die Lösung ist vielleicht nicht die sauberste, aber was solls! Hier wird die Textmarke nach Überschreiben einfach wieder eingefügt:


Sub Weiterzählen()
'
   Dim Zähl
   
   ChangeFileOpenDirectory _
      "G:\Dokumente und Einstellungen\xxxx\Anwendungsdaten\Microsoft\Vorlagen\"
   Documents.Open FileName:="test.dot", ConfirmConversions:=False, ReadOnly:= _
      False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
      "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
      Format:=wdOpenFormatAuto, XMLTransform:=""
   Selection.GoTo What:=wdGoToBookmark, Name:="LfdNr"
   With Selection.Find
      Zähl = Val(Selection) + 1
      Selection.Text = Zähl
      Selection.Bookmarks.Add "LfdNr"
   End With
   ActiveDocument.Save
   ActiveDocument.Close
   Documents.Add Template:= _
      "G:\Dokumente und Einstellungen\xxxx\Anwendungsdaten\Microsoft\Vorlagen\test.dot" _
      , NewTemplate:=False, DocumentType:=0
End Sub


Gruß piano

Antwort 6 von Dennis Galander

Hi Piano,

schön, wenn Lösungen so einfach sein können. Ich hatte eine - bei weitem kompliziertere - Version gebastelt....

Ich danke Dir nochmals für die Hilfe.

Gruß
Dennis

P.S. Supporter aller Länder.... lasst's Euch gut gehen. ;)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: