Seriennummer oder fortlaufende Nummer in der Fußzeile eines Word-Dokuments drucken

Seriennummer oder fortlaufende Nummer in der Fußzeile eines Word-Dokuments drucken

Ich denke, das ist wahrscheinlich ein Duplikat, aber ich kann keine guten Antworten finden und unter „Fragen, die Ihre Antwort möglicherweise bereits enthalten“ wird nur eine Antwort für Excel angezeigt.

Ich möchte gedruckte Dokumente nachverfolgen, indem ich jedem gedruckten Dokument eine Seriennummer bzw. eine fortlaufende Nummer zuordne.

Das Ziel besteht darin, dass wir ein Dokument haben, das als Master dient und dann protokolliert.

Ich möchte, dass jedes Protokoll eine fortlaufende/eindeutige Nummer hat und dass die Leute diese eindeutige Nummer dann in das Hauptdokument schreiben können, um leicht auf das entsprechende Protokoll verweisen zu können.

Ich habe einige komplizierte VBA-Programme gefunden, bin aber nicht damit vertraut, VBA-Code in Word einzufügen, und das scheint kompliziert zu sein. Ich dachte, Word hätte hierfür eine integrierte Funktion, die mir fehlt.

Ich möchte, dass das Feld folgendermaßen aussieht:

Doc #: 1

Beim nächsten Drucken sollte es in der Fußzeile angezeigt werden.

Doc #: 2

usw. usw.

Danke schön,

PS: Aktuell nutzen wir Office 2013.

https://stackoverflow.com/questions/50769735/Verbesserung des VBA-Makros in Word zum automatischen Erstellen einer Datei im Zusammenhang mit dem Dokument na

Makro in Word-Dokument einbetten

Seriennummer oder fortlaufende Nummer in der Fußzeile eines Word-Dokuments drucken

https://stackoverflow.com/questions/48909968/running-a-macro-before-printing-a-word-document

Antwort1

VBA scheint die beste Lösung zu sein. Ich habe nur eine Lösung gefunden, die zu meinem Problem passt und funktioniert.

Methode 1:(Diese Methode macht das Dokument portierbar, hat aber keine eindeutigen Nummern für jedes Dokument.)

Seriennummerierte_Dokumentvorlage.docm

  • Erstellen Sie zunächst eine „Benutzerdefinierte Dokumenteigenschaft“ mit dem Namen „Zähler“ und setzen Sie den Anfangswert auf 0 (oder einen beliebigen Wert).

  • Einfügen in das Dokument an der Stelle, an der es gedruckt werden soll (STRG + F9)

  • Dieses Modul erhöht die Nummer bei jedem Aufruf des Moduls um eins:

Sub FilePrint()
    Dim i As Long, j As Long
    With ActiveDocument
        j = CLng(InputBox("How many copies to print?", "Print Copies"))
        For i = 1 To j
            With .CustomDocumentProperties("Counter")
                .Value = .Value + 1
            End With
            .Fields.Update
            ActiveDocument.PrintOut Copies:=1
        Next
        .Save
    End With
End Sub   
  • Jetzt habe ich mein „EventClassModule“ so geändert, dass es beim Drucken automatisch dieses Sub aufruft:
Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
    ' MsgBox "Before Print"
    ' Call Greeting
    ' Call SerialNumber
    Cancel = True
    Call FilePrint
End Sub

Methode 2:(Diese Methode verwendet eine Datei zum Verfolgen der Seriennummer, was den Vorteil hat, dass mehrere Word-Dokumente dieselben Einstellungen/das gleiche Aktualisierungsprotokoll verwenden und jedes Word-Dokument eine eindeutige Nummer haben sollte.)

Ich habe diese Anleitung befolgt, die Sie hier finden -->

https://wordmvp.com/FAQs/MacrosVBA/NumberCopiesOf1Doc.htm

Natürlich ist der auf der Site veröffentlichte Code falsch ...

Das Problem besteht darin, dass dieser Codeausschnitt erforderlich ist:

' Display message, title, and default value.
Dim SerialNumber As String
NumCopies = Val(InputBox(Message, Title, Default))
SerialNumber = System.PrivateProfileString("C:\settings.txt", "MacroSettings", "SerialNumber")

Beachten Sie die Zeile Dim SerialNumber As String, die NICHT auf der Website steht. Ohne sie erhalten Sie den in dieser Frage gefundenen Fehler >>

https://stackoverflow.com/questions/48348049/vba-compile-error-expected-function-or-variable

Für die Nachwelt kopiere ich die Anleitung hierhin:

Beachten Sie auch, dass ich eine weitere Änderung vorgenommen habe, nämlich dass die Site zwei Stellen für „settings.txt“ anzeigt, aber eine ist „Settings.Txt“ und die andere „Settings.txt“. Ich habe es auf „settings.txt“ geändert, da ich ein Linux-Typ bin und weiß, wie Großbuchstaben und Leerzeichen usw. Sie in Zukunft durcheinander bringen können.

------------------------------------------------`

Erstellen Sie ein Lesezeichen mit dem Namen SerialNumberim Dokument, in dem die Seriennummer erscheinen soll. Es kann in der Kopf- oder Fußzeile sein, wenn Sie die Nummer dort haben möchten. Erstellen Sie dann ein Makro mit den folgenden Befehlen, um das Dokument zu drucken.

Sie werden nach der Anzahl der Kopien gefragt, die Sie erstellen möchten, und jede Kopie wird fortlaufend nummeriert. Beim ersten Ausführen des Makros erhält die erste Kopie die Nummer 1. Nach Abschluss der Ausführung wird in einer Datei Settings.Txt die Nummer gespeichert, die um eins höher ist als die Nummer der letzten Kopie. Beim nächsten Ausführen des Makros werden die Kopien ab dieser Nummer nummeriert. Wenn die Nummern beim ersten Start bei einer anderen Zahl als 1 beginnen sollen, führen Sie das Makro aus, geben Sie 1 als Anzahl der Kopien ein, öffnen Sie die Datei Settings.Txt und ersetzen Sie die Nummer in der Datei durch die Nummer, die die erste in der Reihe sein soll. Wenn die Reihe später zu einem beliebigen Zeitpunkt bei einer bestimmten Nummer beginnen soll, können Sie diese Datei öffnen und die Nummer darin durch die Nummer ersetzen, die die erste in der Reihe sein soll.

Sub SerialNumber()
    '
    ' SerialNumber Macro
    '
    '
    Dim Message  As String, Title  As String, Default  As String, NumCopies  As Long
    Dim Rng1   As Range
    
    ' Set prompt.
    Message = "Enter the number of copies that you want to print"
    ' Set title.
    Title = "Print"
    ' Set default.
    Default = "1"
    
    ' Display message, title, and default value.
    Dim SerialNumber As String
    NumCopies = Val(InputBox(Message, Title, Default))
    SerialNumber = System.PrivateProfileString("W:\settings.txt", _
        "MacroSettings", "SerialNumber")
    
    If SerialNumber = "" Then
        SerialNumber = 1
    End If
    
    Set Rng1 = ActiveDocument.Bookmarks("SerialNumber").Range
    Counter = 0
    
    While Counter < NumCopies
        Rng1.Delete
        Rng1.Text = SerialNumber
        ActiveDocument.PrintOut
        SerialNumber = SerialNumber + 1
        Counter = Counter + 1
    Wend
    
    'Save the next number back to the Settings.txt file ready for the next use.
    System.PrivateProfileString("W:\settings.txt", "MacroSettings", _
        "SerialNumber") = SerialNumber
    
    'Recreate the bookmark ready for the next use.
    With ActiveDocument.Bookmarks
        .Add Name:="SerialNumber", Range:=Rng1
    End With
End Sub

Hinweis: Sie können/sollten den Speicherort von „settings.txt“ wahrscheinlich in den von Ihnen bevorzugten LAN-Speicherort ändern!

settings.txt
[MacroSettings]
SerialNumber=1

verwandte Informationen