Necesito incrementar un numero que contiene el numero de factura de una
template en Word, a la cual le aado automaticamente la fecha y la hora pero
no se como puedo incrementar un nmero de manera automatica cada vez que se abre la template. Se puede hacer? Hola, Jos Luis. Lo que intentas lo puedes hacer si combinas campos con un poco de programacin VBA. No es difcil, y an cuando no sepas el lenguaje lo puedes hacer, si sigues cuidadosamente las instrucciones siguientes. Primero, debes insertar un campo numrico en tu documento. Ese campo numrico llevar el control del nmero correlativo. Segundo, debers ajustar el nivel de seguridad de tu Word para permitirte utilizar macros. Tercero, debers copiar un pequeo macro en el evento "Document_Open". Y Cuarto, necesitars eventualmente modificar el correlativo, por cualquier imprevisto. Vamos ahora con el proceso. Te sugiero que cierres todos los documentos, y abras solamente el que contendr el correlativo. PRIMERO: Inserta el campo numrico... 1. Sita el cursor en el lugar donde deseas el correlativo. 2. Activa la barra de herramientas Formularios ("Ver" - "Barras de herramientas" - "Formularios") 3. Haz clic en el botn "Campo con Texto". 4. Inmediatamente, haz clic en el botn "Opciones de campos de formulario" 5. En el cuadro de dilogo haces las siguientes selecciones: En "Tipo": Seleccionas "Nmero". En "Nmero predeterminado", escribes 0 (cero) o el valor inicial. En "Marcador", escribes "Correlativo" (este ser el nombre de tu campo). 6. Haz clic en el botn "Aceptar". 7. Cierra la barra de herramientas Formulario SEGUNDO: Ajustas el nivel de seguridad... 1. Haga clic en "Herramientas" - "Macro" - "Seguridad", y establezca el nivel "Medio". TERCERO: Copias el macro... 1. Haz clic en "Herramientas" - "Macro" - "Editor de Visual Basic". 2. Para asegurarte que se encuentre disponible el Explorador de Proyectos, pulsa F2. 3. El explorador de proyectos es una lista jerrquica, parecida a la lista de carpetas del Explorador de Windows. Se muestra por lo regular en la
esquina superior izquierda del Editor de VBA. En esta lista, localiza el
proyecto correspondiente al documento que ests editando: Project (NombreDocumento), y expndelo. Si es necesario, expande las carpetas del proyecto, hasta localizar el elemento "ThisDocument". 4. Haz doble clic en el elemento ThisDocument. Al lado derecho se mostrar una ventana en blanco para la edicin del cdigo. 5. Copia y pegas a esta ventana lo siguiente: Private Sub Document_Open() ActiveDocument.FormFields("Correlativo").Result = ActiveDocument.FormFields("Correlativo").Result + 1 End Sub NOTA: Son tres lneas: Private..., ActiveDocument... y End Sub. La de enmedio puede dividirse en dos por espacio en el editor del foro. Si fuera as, asegrate de volver a unirla en una sola. 6. Cierras el Editor de Visual Basic. (No es necesario guardar). 7. Guarda y cierra el documento. 8. Vuelves a abrir el documento (asegrate de habilitar las macros) y observa si se actualiz el correlativo. CUARTO: Cuando necesites actualizar el nmero del correlativo... 1. Haz clic derecho en el nmero del correlativo, y luego en "Propiedades". 2. Modifica el valor del correlativo en el cuadro "Nmero predeterminado". 3. Guarda y cierra su documento. Difcil? Aparentemente, pero creme no lo es. Tal vez un poco largo, pero vale la pena. Comentas si encuentras dificultades al implementarlo. Saludos. "Jose Luis" escribi: Muchas gracias David. Lo he podido hacer y me ha resultado super prctico. Despus de haber perdido horas y horas buscando explicaciones por el Google, vas t y me lo resuelves a la primera. Como dice el dicho: El que sabe, sabe. MUCHISIMAS GRACIAS DE TODO CORAZN. "David" escribi:
Tengo otra pequea solucin.
Prob tu solucin y funciona aunque slo al abrir el mismo archivo. No me funcion en una plantilla para cada vez que necesitaba crear un nuevo documento basado en esa plantilla. Asi que modifiqu ligeramente el cdigo asi. Primero, no us la opcin formularios, sino que cree una propiedad configurable (Propiedades del documento, Personalizar) que llam Folio. Bueno esto por gusto, me imagino que usando formulario tambin servira. Luego en VB, en ThisDocument pegu lo siguiente: Private Sub Document_New() Dim Folio As Integer Folio = Templates(1).CustomDocumentProperties("Folio").Value Templates(1).CustomDocumentProperties("Folio").Value = _ Templates(1).CustomDocumentProperties("Folio").Value + 1 Templates(1).Save On Error Resume Next ActiveDocument.CustomDocumentProperties("Folio").Value = Folio End Sub Luego en el documento plantilla (yo lo hice en la cabecera) pegu el campo {DOCPROPERTY Folio \*mergeformat} (Insertar, campo, Inf. Documento, DocProperty, busqu la etiqueta creada Folio y acept) Guard la plantilla y listo. Cada vez que creo un documento nuevo, se actualiza la plantilla con esa opcin. Por lo menos a mi me funciona, el nico problema es que se contabiliza cada vez que creas un nuevo documento, lo guardes o no, lo imprimas o no. Haban otras opciones para detectar esos eventos, pero haba que configurar y la idea era que fuera lo ms transparente posible. Esto lo us para controlar los documentos que se crean en una organizacin. Saludos, -Muchisimas Gracias,