Drucken Sie Seriennummer oder Inkrementierungsnummer in Word-Dokumentfußzeile

1014
FreeSoftwareServers

Ich denke, dass dies wahrscheinlich ein Dup ist, aber ich kann keine guten Antworten finden und "Fragen, die Ihre Antwort möglicherweise bereits haben", zeigen nur eine Antwort auf Excel.

Ich suche, um gedruckte Dokumente zu verfolgen, indem eine Seriennummer oder eine aufsteigende Nummer auf jedem Dokument gedruckt wird.

Das Ziel ist, dass wir ein Dokument haben, das der Master ist und dann protokolliert.

Ich möchte, dass jedes Protokoll eine inkrementelle / eindeutige Nummer hat, und die Benutzer können diese eindeutige Nummer in das Master-Dokument schreiben, um auf das entsprechende Protokoll Bezug zu nehmen.

Ich habe einige komplizierte VBA gefunden, aber ich bin nicht vertraut mit dem Hinzufügen von VBA-Code zu Word, und das scheint kompliziert zu sein. Ich dachte, Word hat eine eingebaute Funktion, die ich vermisse.

Ich möchte, dass das Feld so aussieht:

Doc #: 1 

Das nächste Mal, wenn wir drucken, sollte es in der Fußzeile angezeigt werden

Doc #: 2 

usw. usw.

Vielen Dank,

PS: Derzeit verwenden wir Office 2013.

https://stackoverflow.com/questions/50769735/improving-vba-macro-in-word-to-automatically-create-file-relating-to-document-na

Einbetten des Makros in Word

Drucken Sie Seriennummer oder I-Nummer in Word-Dokumentfußzeile

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

0

1 Antwort auf die Frage

0
FreeSoftwareServers

Die VBA von Seem ist der richtige Weg, ich habe nur eine Lösung gefunden, die zu meinem Problem passt und funktioniert.

Methode 1: (Bevorzugt, da keine separate Textdatei zum Speichern der Dokumentseriennummer verwendet wird, sondern eine benutzerdefinierte Dokumenteigenschaft verwendet wird.)

Siehe >> https://stackoverflow.com/questions/50769735/improving-vba-macro-in-word-to-automatically-create-file-relating-to-document-na/50772002#50772002

Mein Blogbeitrag:

https://www.freesoftwareservers.com/wiki/adding-serial-number-or-incremental-number-to-word-document-at-print-time-29982743.html

Wenn Sie sich mit Macros noch nicht auskennen, würde ich das Lesen des einfachen Begrüßungs-Makros - Word - Microsoft Office empfehlen.

https://www.freesoftwareservers.com/wiki/create-simple-greeting-macro-word-microsoft-office-29982727.html

Sie sollten diese Funktion auch automatisieren lassen, sobald sie wie erwartet über diesen Beitrag funktioniert. >> Makro vor dem Drucken ausführen - Word - Microsoft Office

https://www.freesoftwareservers.com/wiki/run-macro-vor-druckingword-microsoft-office-29982730.html

Hier ist mein Endprodukt, das für Sie "tragbar" ist:

https://confluence.freesoftwareservers.com/download/attachments/29982743/Serial_Numbered_Doc_Template.docm?version=1&modificationDate=1528691713060&api=v2

Serial_Numbered_Doc_Template.docm

  • Erstellen Sie zuerst eine "Custom Document-Eigenschaft" mit dem Namen "Counter" und setzen Sie den Anfangswert auf 0 (oder was auch immer).

https://www.freesoftwareservers.com/wiki/creating-custom-document-property-in-microsoft-office-word-29982751.html

  • In das Dokument einfügen, wo es beim Drucken erscheinen soll (Anweisungen finden Sie unter Link).

  • Drücken Sie Alt + F11, um den VBA-Editor zu öffnen und ein neues Modul zu erstellen

    Sub FilePrint () D i i Long, j As Long mit ActiveDocument j = CLng (InputBox ("Wie viele Kopien sollen gedruckt werden?", "Print Copies")) Für i = 1 bis j mit .CustomDocumentProperties ("Counter"). Wert = .Value + 1 End mit .Fields.Update .PrintOut Next .Save End mit End Sub

  • Jetzt habe ich mein "EventClassModule" geändert, um beim Drucken automatisch dieses U-Boot aufzurufen:

    Private Sub App_DocumentBeforePrint (ByVal Doc As Document, Abbrechen als Boolean) 'MsgBox "Before Print"' Begrüßung des Anrufs 'Call SerialNumber Cancel = True Call FilePrint End Sub

Methode 2:

Natürlich ist der auf der Website veröffentlichte Code nicht korrekt. Diesen finden Sie hier unter https://wordmvp.com/FAQs/MacrosVBA/NumberCopiesOf1Doc.htm

Das Problem ist, dass es dieses Code-Snippet haben muss:

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

Beachten Sie die Zeile, Dim SerialNumber As Stringdie NICHT auf der Website ist. Andernfalls wird der in dieser Frage gefundene Fehler angezeigt. >> https://stackoverflow.com/questions/48348049/vba-compile-error-expected-function-or-variable?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Für die Nachwelt werde ich den Führer hier kopieren:

Beachten Sie auch, dass ich eine weitere Änderung vorgenommen habe, nämlich, dass auf der Site zwei Stellen für "settings.txt" angezeigt werden, einer jedoch "Settings.Txt" und der andere "Settings.txt". Ich habe es auf "settings.txt" umgestellt, da ich ein Linux-Typ bin und weiß, wie Kappen, Leerzeichen usw. Sie in Zukunft durcheinander bringen können.

---------------------------------------------

Erstellen Sie ein Lesezeichen, das SerialNumberin dem Dokument benannt ist, in dem die Seriennummer angezeigt werden soll. Es kann sich in der Kopf- oder Fußzeile befinden, wenn Sie die Nummer dort möchten. Erstellen Sie dann ein Makro, das die folgenden Befehle enthält, um das Dokument zu drucken.

Sie werden nach der Anzahl der Kopien gefragt, die Sie erstellen möchten, und jede Kopie wird fortlaufend nummeriert. Wenn dieses Makro zum ersten Mal ausgeführt wird, wird die erste Kopie mit 1 nummeriert. Wenn die Ausführung abgeschlossen ist, wird die Anzahl der Kopien in einer Datei "Settings.Txt" gespeichert ist eine Nummer mehr als die Nummer auf der letzten Kopie. Bei der nächsten Ausführung des Makros beginnt die Nummerierung der Kopien ab dieser Nummer. Wenn Sie beim ersten Start mit einer anderen Zahl als 1 beginnen möchten, führen Sie das Makro aus, geben Sie als Anzahl der Kopien 1 ein, und öffnen Sie die Datei Settings.Txt. Ersetzen Sie die Nummer in der Datei durch die gewünschte Nummer Wenn Sie möchten, dass die Serie bei einer bestimmten Nummer beginnt, können Sie diese Datei öffnen und die Nummer darin durch die Nummer ersetzen, die Sie als erste in der Serie verwenden möchten.

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 wahrscheinlich den Ort von "settings.txt" in den von Ihrem LAN bevorzugten Ort ändern!

einstellungen.txt

[MacroSettings] SerialNumber=1 
Wenn jemand gut in VBA ist und nichts dagegen hat, eine Hand zu geben, sehe ich Raum für Verbesserungen. Ich möchte dies zu einer Reihe von Dokumenten hinzufügen, die nicht dieselbe settings.txt verwenden. Ich möchte, dass die `settings.txt` als` document_name.txt` bezeichnet und automatisch in der `document_location` gespeichert wird. FreeSoftwareServers vor 5 Jahren 0
https://stackoverflow.com/questions/50769735/improving-vba-macro-in-word-to-automatically-create-file-relating-to-document-na FreeSoftwareServers vor 5 Jahren 0