Imprimir número de serie o número incremental en el pie de página de un documento de Word

Imprimir número de serie o número incremental en el pie de página de un documento de Word

Siento que esto probablemente sea una duplicación, pero no puedo encontrar buenas respuestas y "Preguntas que quizás ya tengan su respuesta" solo muestra una respuesta para Excel.

Estoy buscando realizar un seguimiento de los documentos impresos teniendo un número de serie, también conocido como un número incremental, en cada documento impreso.

El objetivo es que tengamos un documento que sea el maestro y luego los registros.

Quiero que cada registro tenga un número incremental/único y luego las personas puedan escribir ese número único en el documento maestro para consultar fácilmente el registro correspondiente.

He estado encontrando algo de VBA complicado, pero no estoy familiarizado con agregar código VBA a Word y eso parece complicado, pensé que Word tiene una función incorporada para esto que me falta.

Quiero que el campo se vea así:

Doc #: 1

La próxima vez que imprimamos debería aparecer en el pie de página.

Doc #: 2

etcétera etcétera.

Gracias,

PD: Office 2013 es lo que usamos actualmente.

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

Incrustar macro en un documento de Word

Imprimir número de serie o número incremental en el pie de página de un documento de Word

https://stackoverflow.com/questions/48909968/ejecutar-a-macro-antes-de-imprimir-un-documento-de-word

Respuesta1

VBA de Seem es el camino a seguir, solo encontré una solución que se adapta a mi problema y funciona.

Método 1:(Este método hace que el documento sea portátil, pero no tiene números únicos para cada documento)

Plantilla_doc_numerada_de_serie.docm

  • Primero cree una "Propiedad de documento personalizado" llamada "Contador" y establezca el valor inicial en 0 (o lo que sea).

  • Insertar en el documento donde desea que esté cuando se imprima (CTRL + F9)

  • Este módulo incrementará el número en uno cada vez que se llame al módulo:

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   
  • Ahora modifiqué mi "EventClassModule" para llamar automáticamente a este sub al imprimir:
Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
    ' MsgBox "Before Print"
    ' Call Greeting
    ' Call SerialNumber
    Cancel = True
    Call FilePrint
End Sub

Método 2:(Este método utiliza un archivo para rastrear el número de serie, lo que tiene la ventaja de que varios documentos de Word comparten la misma configuración/registro de actualización y cada documento de Word debe tener un número único).

Seguí esta guía que se encuentra aquí -->

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

Por supuesto, el código publicado en el sitio es incorrecto...

El problema es que necesita tener este fragmento de código:

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

Tenga en cuenta la línea Dim SerialNumber As Stringque NO está en el sitio web. Sin él, aparece el error que se encuentra en esta pregunta >>

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

Para la posteridad, copiaré la guía aquí:

También tenga en cuenta que hice otro cambio: el sitio muestra dos lugares para "settings.txt", pero uno es "Settings.Txt" y el otro es "Settings.txt". Lo cambié a "settings.txt" porque soy un experto en Linux y sé cómo las mayúsculas y los espacios, etc., pueden arruinarte en el futuro.

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

Cree un marcador con el nombre SerialNumberdel documento donde desea que aparezca el número de serie. Puede estar en el encabezado o pie de página si es ahí donde desea el número. Luego cree una macro que contenga los siguientes comandos para imprimir el documento.

Le pedirá la cantidad de copias que desea realizar y numerará secuencialmente cada copia. La primera vez que se ejecute esta macro, la primera copia se numerará 1 y cuando termine de ejecutarse, almacenará en un archivo Settings.Txt el número que es uno más que el número de la última copia. La próxima vez que se ejecute la macro, comenzará a numerar las copias a partir de ese número. Si cuando comienza por primera vez, desea que los números comiencen en algún número que no sea 1, ejecute la macro, ingrese 1 como número de copias y luego abra el archivo Settings.Txt y reemplace el número en el archivo con el número que desee. como el primero de la serie. En cualquier momento posterior, si desea que la serie comience en un número particular, puede abrir ese archivo y reemplazar el número que contiene con el número que desea que sea el primero de la serie.

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

Nota: ¡Probablemente puedas/deberías cambiar la ubicación de "settings.txt" a tu ubicación preferida de LAN!

settings.txt
[MacroSettings]
SerialNumber=1

información relacionada