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.
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.
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
Muy bueno! Me gusta tu contenido!
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
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.
Se podrá realizar lo mismo para un archivo Excel?
Muchas gracias, José, por seguir y compartir, con tus contactos, mis canales:
Es mucho más sencillo en Excel. Apenas necesitas código: https://www.freshbooks.com/hub/invoicing/change-invoice-number-excel
Hola Pepe, muchas gracias por tu aporte.
En caso de que el archivo quede en una nube como se podria hacer?
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.
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
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.
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.
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.
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.
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
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.
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
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?
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.
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.
Amigo tienes el video de este tutorial
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.
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.
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*.
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.
Muchas gracias, Andrea, por seguir y compartir con tus contactos mis canales:
Si nunca ocupan más de dos páginas te puede servir esto: https://wordexperto.com/2016/06/21/numerar-hojas-o-folios-numbering-only-odd-pages/.
Lo más práctico es que incluyas «Acta» en la numeración de Título 1 y lo apliques a cada nueva acta. Aquí hay dos ejemplos: https://wordexperto.com/2018/07/24/formatos-de-numeracion-personalizados/