Crear automáticamente documentos numerados

En muchas ocasiones, como facturas u otros documentos legales, necesitaremos crear nuevos documentos con un número que se vaya incrementando, también automáticamente, cada vez.

Es una pregunta que mis seguidores me hacen, con bastante frecuencia, en los comentarios a diferentes entradas. Es por lo que considero necesario escribir esta entrada para aclarar y unificar toda esta información dispersa por el blog.

No hay funcionalidades integradas de Word que permitan hacerlo; Tenemos que recurrir a la programación en VBA.

El código está tomado de la página de los mvp de Word de Microsoft: https://wordmvp.com/FAQs/MacrosVBA/NumberDocs.htm y apenas he modificado nada, solo lo imprescindible, como las rutas, para que sea lo más exacto posible al original, incluidos los nombres.

Se trata de una macro tipo AutoNew, se podría hacer también con una normal, pero esta tiene la ventaja de que es automática. Cada vez que creemos un nuevo documento basado en esa plantilla se generará automáticamente.

Antes que nada, creo un archivo de texto en una ubicación de mi disco duro. Este archivo es el contador de la numeración y en él se puede reiniciar o cambiar, si lo necesitamos.

Muestro la ubicación del archivo de texto con la numeración

En un documento en blanco inserto un marcador, llamado Order, en el lugar donde quiero el número. Este documento lo guardo como plantilla. Donde se guarde, si no cambiamos la ruta, se guardarán los nuevos documentos numerados. Estos aparecerán como Path001.docx y así sucesivamente. En la imagen de mi ejemplo es Path004.docx. Yo he guardado la plantilla DocumentosNumerados.dotm en Users\José\Documents\Plantillas personalizadas de Office para poder acceder a ella desde Archivo > Nuevo > Personal.

Documentos numerados
En el mismo lugar que guardamos la plantilla se guardan, por defecto, los nuevos documentos numerados, basados en ella.

En la vista previa del nuevo documento se observa la marca de formato donde coloqué el marcador Order en la plantilla.

Ya lo tenemos todo, con Alt+F11 abrimos el editor de Visual Basic y pegamos el código en un nuevo módulo de ThisDocument. Este es el código que he usado en mi ejemplo:

Sub AutoNew()

Order = System.PrivateProfileString("C:\Users\Pepe\Settings.Txt", "MacroSettings", "Order")

If Order = "" Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString("C:\Users\Pepe\Settings.txt", "MacroSettings", _
"Order") = Order

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "00#")
ActiveDocument.SaveAs FileName:="path" & Format(Order, "00#")

End Sub

Además del nombre del marcador (Order), se puede cambiar la ruta del archivo Settingd.txt y el nombre de los nuevos documentos numerados (Path). La ruta de Settings.txt, no es que se pueda, es que se debe, porque en mi ejemplo hay una ubicación del disco duro de mi ordenador. Path lo puedes sustituir por Factura número:, o lo que corresponda.

Espero que te guste y sea útil. Si es así, sigue el blog y compártelo con tus contactos. Espero tus comentarios y sugerencias para nuevos temas.

También puedes seguir el Curso avanzado de Word en mi canal de YouTube

Esta entrada tiene 24 comentarios

  1. Ivan

    Muy bueno! Me gusta tu contenido!

  2. walther VU

    Amigo si lees este mensaje; una consulta tienes el video de este tutorial en tu canal por que no lo encontre pero si me funciono, pero quisiera un video; para mas ayuda
    otra consulta al guardarse solo me guarda en documentos, existe alguna posibilidad de que se pueda elegir una carpeta especifica para guardar lo que se genera.
    Buen Aporte

    si puedes responderme al correo cloud_blue12@hotmail.com

    1. Pepe Martínez

      Muchas gracias, Walther, por seguir y compartir, con tus contactos, mis canales:
      No, todavía no lo he hecho, el vídeo. No lo tengo previsto para los próximos meses. Aún así, creo que en la entrada está todo explicado con detalle y acompañado de imágenes. En este párrafo lo comento:
      En un documento en blanco inserto un marcador, llamado Order, en el lugar donde quiero el número. Este documento lo guardo como plantilla. Donde se guarde, si no cambiamos la ruta, se guardarán los nuevos documentos numerados. Estos aparecerán como Path001.docx y así sucesivamente. En la imagen de mi ejemplo es Path004.docx. Yo he guardado la plantilla DocumentosNumerados.dotm en Users\José\Documents\Plantillas personalizadas de Office para poder acceder a ella desde Archivo > Nuevo > Personal.

  3. Jose

    Se podrá realizar lo mismo para un archivo Excel?

  4. Julio

    Hola Pepe, muchas gracias por tu aporte.
    En caso de que el archivo quede en una nube como se podria hacer?

    1. Pepe Martínez

      Muchas gracias, Julio, por seguir y compartir, con tus contactos, mis canales:
      No lo he probado, pero, supongo, no habrá problema en cambiar la ruta.

  5. Alberto

    Muchísimas gracias, Julio.
    Me funciona muy bien, solo tengo un pequeño problema, en vez de poner "Path" le pongo "Cinta" y le añado un espacio para que muestre separado el nombre del número (Cinta 5521). Pues cuando le pongo el espacio en vez de guardarme el documento en la ruta que le he indicado me la envía a "Documentos" y aparece correctamente. Yo quisiera que apareciera en la ruta que le había indicado en la macro.

    Un saludo y muchísimas gracias. Cuidate

    1. Pepe Martínez

      Muchas gracias, Alberto, por seguir y compartir, con tus contactos, mis canales:
      Como comento en la entrada, Path lo puedes sustituir por Factura número:, o lo que corresponda.
      Por cierto, no es importante ni me molesta, pero ¿Julio? Soy Pepe.

    2. Pepe Martínez

      Muchas gracias, Alberto, por seguir y compartir, con tus contactos, mis canales:
      Como comento en la entrada, Path lo puedes sustituir por Factura número:, o lo que corresponda.
      Por cierto, no es importante ni me molesta, pero ¿Julio? Soy Pepe.

      1. Alberto

        Pues no sé por qué te llamo Julio. Se me han cruzado los cables, ya puedes perdonar. El comentario está repetido porque en la segunda me he suscrito a la lista.
        Muchas gracias Pepe.

  6. Alberto

    Hola Pepe.
    Muy bueno, funciona muy bien. Solo tengo un pequeño problema, he cambiado las rutas y el nombre que le da a los documentos (Path) y le he puesto (Cinta) pero al final le he añadido un espacio para que salga separado del número. Al poner el espacio me lo guarda pero en Documentos y no en la ruta que yo le había marcado. Si le quito el espacio se guarda perfectamente en la ruta indicada.
    Sabrías decirme cuál puede ser el problema?
    Un saludo.

    1. Roro Amaya

      Buenas tardes Alberto me podrias facilitar el archivo soy principiante y casi no tengo conocimineto en programacion hice todos los pasos perosiempre me sale el siguiente error:
      System.PrivateProfileString("C:\Settings.txt", "MacroSettings", _
      "Order") = Order

      1. Pepe Martínez

        Esa línea es para poner la ubicación del archivo y tú no la has puesto. C:\Settings.txt. ¿En qué lugar de tu disco C tienes el archivo Settings.
        Además del nombre del marcador (Order), se puede cambiar la ruta del archivo Settingd.txt y el nombre de los nuevos documentos numerados (Path). La ruta de Settings.txt, no es que se pueda, es que se debe, porque en mi ejemplo hay una ubicación del disco duro de mi ordenador. Path lo puedes sustituir por Factura número:, o lo que corresponda.

  7. María Teresa

    Muchas gracias Pepe. He estado consultando muchas páginas relacionadas con este tema.
    Te aseguro que tu ejemplo y explicación es la única que me ha servido para realizar lo que necesitaba
    De nuevo gracias por tu ayuda

  8. Pablo

    Hola buenas! Tengo una consulta, solamente logro cambiar el texto del archivo pero el titulo queda igual. Me estaré equivocando en algo o no se puede? hay alguna manera de hacerlo?

    1. Pepe Martínez

      Muchas gracias, Pablo, por seguir y compartir, con tus contactos, mis canales:
      Repito lo que digo en la entrada, como puedes ver, puedes cambiar el nombre del archivo:
      Además del nombre del marcador (Order), se puede cambiar la ruta del archivo Settingd.txt y el nombre de los nuevos documentos numerados (Path). La ruta de Settings.txt, no es que se pueda, es que se debe, porque en mi ejemplo hay una ubicación del disco duro de mi ordenador. Path lo puedes sustituir por Factura número:, o lo que corresponda.

  9. This was my first blog on your website. I would like to say that the quality of the content is up to mark. Thanks a lot for sharing this. I will surely read all the blogs from now.

  10. Roro Amaya

    Amigo tienes el video de este tutorial

    1. Pepe Martínez

      Muchas gracias, Roro, por seguir y compartir, con tus contactos, mis canales:
      No, no lo tengo, pero creo que está bien detallada la explicación.

  11. Fernando A.

    Buenas tardes Pepe, muchas gracias por este grandioso tutorial.

    Estuve intentando, pero no consigo tener éxito, quizás y espero no sea muy tarde, para que me puedas responder.

    Mi duda es la siguiente, yo trabajo con reportes, cuyo consecutivo es el siguiente: UIM-D01-*001*-20XX, donde lo que está entre los '*' es el consecutivo que quiero que vaya cambiando, conforme voy creando nuevos informes, las 'X' es el año en que se crea el informe, leyéndose así: UIM-D01-001-2022, UIM-D01-002-2022, UIM-D01-003-2022... y así sucesivamente.

    La carpeta donde quiero guardarlo está en el escritorio (uso Mac) por lo que la dirección sería esta: /Users/fernando/Desktop/Municipalidad de Santa Cruz/01 - Santa Cruz

    Hasta ahí todo bien, cabe destacar que dentro de la carpeta Santa Cruz, está el archivo Settigs.txt

    Quedando mi código de la siguiente manera:

    Sub AutoNew()

    Order = System.PrivateProfileString("/Users/fernando/Desktop/Municipalidad de Santa Cruz/01 - Santa Cruz", _
    "MacroSettings", "Order")

    If Order = "" Then
    Order = 1
    Else
    Order = Order + 1
    End If

    System.PrivateProfileString("/Users/fernando/Desktop/Municipalidad de Santa Cruz/01 - Santa Cruz/Settings.txt", "MacroSettings", _
    "Order") = Order

    ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "00#")
    ActiveDocument.SaveAs FileName:="/Users/fernando/Desktop/Municipalidad de Santa Cruz/01 - Santa Cruz/UIM-D01-" & Format(Order, "00#") & "-2022"

    End Sub

    Sin embargo, no logro salvarlo para que el consecutivo quede bien y que este vaya creciendo según la cantidad de informes generados, alguna ayuda, por favor.

    Gracias de antemano.

    1. Pepe Martínez

      Muchas gracias, Fernando, por seguir y compartir, con tus contactos, mis canales y por tus amables palabras:
      Por lo que te entiendo, creo que el problema lo tienes con el marcador Order. Debes adaptarlo a tu estructura de numeración. Tal vez usar uno de rango, en vez de posición, justo donde está *001*.

  12. Andrea

    Buenas noches. Necesito ayuda con un consecutivo de word, alguna vez lo vi pero ahora no encuentro información. En mi empresa se crea un unico documento y en cada pagina (por asi decirlo, ya que varia del contenido) debe generarse un numero de acta de salida. Acta 01 > siguiente salida (va en la otra página) Acta 02, y asi sucesivamente, necesito que el numero del acta vaya creandose automaticamente cada vez que se vaya generando una salida dentro del mismo documento, adicional,se debe tener en cuenta que todas las actas quedan guardadas en el documento, no se guardan por separado.

Deja una respuesta