Exportar tres copias con distinto encabezado a PDF en Writer
En tu trabajo tienes que imprimir habitualmente tres copias de un mismo documento, o exportarlo en PDF.
Con cada copia tienes que modificar un texto en su encabezado antes de imprimir o exportar, y eso, por treinta documentos diarios, te roba mucho tiempo.
Te gustaría automatizar el proceso. ¿Es posible?
No sólo es posible, sino que con el tutorial adecuado, hasta puede resultar fácil.
¿Lo... conseguimos?
Partimos de nuestro documento Writer, el mismo en el que hasta ahora tenemos que insertar varios textos distintos en su encabezado para generar distintas copias exportadas en PDF o impresas.
Vamos a utilizar una macro que sustituye automáticamente los nombres de las copias, y exporta cada una de ellas a la carpeta indicada, utilizando el nombre del documento y el nombre de la copia para formar el nombre del documento exportado en PDF. Esta macro se lanzará con un clic desde un botón que agregaremos bien al documento, bien a una nueva barra de herramientas (o a ambos, ¿por que no?)
Empecemos:
Insertar un campo de usuario en el encabezado
Lo primero que haremos es agregar un campo de texto al encabezado en el mismo lugar donde insertamos los distintos textos, sustituyéndolos.
- Haz clic en el lugar del encabezado del documento en que quieres que se muestre el texto
- Selecciona desde el menú Insertar > Campos... > Otros
- En Tipo de campo selecciona Campo del usuario
- En Formato selecciona Texto
- En Nombre escribe el nombre del campo (por si acaso no incluyas acentos, ñ o ç, aunque lo admita). En este ejemplo lo bautizamos como QueCopia
- En Valor escribe el valor inicial que quieras que posea, por ejemplo Ejemplar para el interesado
- Haz clic sobre el botón Aplicar (como diría fornelasa, la palomita verde)
- Haz clic sobre el botón Insertar, y luego sobre Cerrar
En principio, el documento tomará un aspecto similar al siguiente:
Copiar y pegar esta macro en el documento o en tu sistema
La macro que vamos a utilizar es la mostrada a continuación. Tienes que seguir todos los pasos al pie de la letra con mucha atención.
De momento, selecciona SOLO el texto de la macro y dile Copiar a tu navegador:
Sub Exportar3Copias()
Dim cDoc As String, cCarpeta As String, cNomCampo As String
cDoc = ThisComponent.Title
cCarpeta= "C:\Docs\" ' Pon aquí la carpeta destino
cNomCampo = "QueCopia" ' Pon aquí el nombre del campo agregado
ExportarPDF cCarpeta & "Copias", cDoc, cNomCampo, "Ejemplar para la Administración"
ExportarPDF cCarpeta & "Copias", cDoc, cNomCampo, "Ejemplar para el interesado"
ExportarPDF cCarpeta, cDoc, cNomCampo, "Original"
MsgBox ("Proceso terminado", 192, "Exportar 3 copias")
End Sub
Sub ExportarPDF( cCarpeta As String, cDoc As String, cCampo As String , cCopia As String)
' Valor contenido en el campo
Dim Campo As Object
Campo = ThisComponent.getTextFieldMasters.GetByName("com.sun.star.text.FieldMaster.User." & cCampo)
Campo.Content = cCopia
ThisComponent.TextFields.Refresh()
' Compruebo que se pasa la carpeta con \ al final
If Right(cCarpeta,1)<>"\" Then cCarpeta=cCarpeta & "\"
' Exportar a PDF
Dim document As Object, dispatcher As Object
Dim args1(1) As New com.sun.star.beans.PropertyValue
document = ThisComponent.CurrentController.Frame
dispatcher = CreateUNOService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "URL"
args1(0).Value = ConvertToURL( cCarpeta & cDoc & "." & cCopia & ".pdf" )
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
dispatcher.ExecuteDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())
End Sub
Si quieres que la macro sólo esté disponible para tu documento de Writer
Ahora en tu documento de Writer sigue estos pasos:
- Selecciona desde el menú Herramientas > Macros > Organizar macros > OpenOffice/LibreOffice Basic...
- Haz clic sobre el nombre de tu documento (en nuestro caso Mi documento Writer.odt) en Desde la macro, y haz clic en el botón Nuevo
- En Nombre escribe ExportaXPdf y haz clic en Aceptar
- Se abrirá el editor Basic; desde su menú Editar > Seleccionar todo, y de nuevo desde el menú Editar > Pegar
Si quieres que la macro esté disponible para todos los documentos de Writer
Ahora en tu documento de Writer sigue estos pasos:
- Selecciona desde el menú Herramientas > Macros > Organizar macros > OpenOffice/LibreOffice Basic...
- Haz clic sobre el contenedor Mis macros en Desde la macro, y haz clic en el botón Nuevo
- Se abrirá el editor Basic que se habrá situado en donde puedes pegar tu macro; habrá pegado automáticamente un texto que dice
Sub Macro1
End Sub
- Selecciona ese texto y selecciona desde el menú Editar > Pegar
Personalizar la macro
En la primera subrutina de la macro, que se llama Exportar3Copias, sustituye los nombres de las carpetas por el adecuado, así como los nombres de las distintas copias, y si has utilizado un nombre de campo del usuario distinto a QueCopia, cambia ese nombre en el lugar correspondiente.
Ten cuidado, respeta las comillas dobles, respetando mayúsculas y minúsculas, las comas, ¡¡¡ todo !!! Esto es programación, y es muy sensible.
- Cierra el editor Basic. Los cambios realizados serán almacenados.
Crear un botón para lanzar la macro
Si la macro la grabaste sólo para tu documento
Lo lógico es agregar un botón en el mismo documento para lanzar la macro:
- Selecciona desde el menú Ver > Barras de herramientas > Campos de control de formulario
- Agrega un botón en tu documento, clic secundario sobre el botón y selecciona Campo de Control...
- Cambia las siguientes propiedades:
- Desde la pestaña General: en Título escribe Exportar copias, cambia Imprimible a No
- Desde la pestaña Acontecimientos, clic sobre el botón con 3 puntos al nivel de Botón del ratón soltado,clic en el botón Macro...
- Selecciona en Biblioteca el + delante del nombre del documento, el + delante de Standard, clic sobre ExportaXPdf
- En Nombre de macro, selecciona Exportar3Copias; clic en Aceptar
- Clic en Aceptar
- Clic en el botón Modo diseño de la barra de herramientas Campos de control de formulario
- Guarda tu documento
El documento con el botón lucirá algo como muestra la siguiente imagen; no debe preocuparte el botón, pues no se imprimirá ni se exportará al documento PDF.
Si la macro la grabaste para todos los documentos
Lo lógico es agregar un botón en una barra de herramientas propia para lanzar la macro:
- Selecciona desde el menú Herramientas > Personalizar
- Selecciona la pestaña Barras de herramientas
- Clic en el botón Nuevo...
- Escribe el nombre de tu nueva barra de herramientas, y haz clic sobre Aceptar
- Clic sobre el botón Agregar...
- En Categoría, haz clic sobre el + de Macros de OpenOffice, clic sobre el + de Mis macros, clic sobre el + de Standar, clic sobre Module1
- En Comandos selecciona Exportar3Copias
- Clic en el botón Agregar (sólo una vez) y en el botón Cerrar
- Si quieres asignarle una imagen, desde el botón Modificar selecciona Cambiar icono...
- Si quieres cambiar el texto, desde el botón Modificar selecciona Renombrar...
- Clic sobre el botón Aceptar
- Localiza la nueva barra de herramientas en la parte superior, seguramente tras la barra de herramientas Buscar.
+ info sobre Crear nuevas barras de herramientas aquí
Ten en cuenta que esta macro sólo funcionará en aquellos documentos de Writer donde hayas insertado un campo de usuario con el mismo nombre que hemos utilizado.
Y para finalizar...
Nada. ¡¡¡ Ya has terminado !!!
Si te ha gustado, puedes votar (abajo a la derecha) y/o apóyarnos visitando alguna página de nuestros patrocinadores.
Si quieres probarlo antes, puedes descargar este documento con la macro incluída.
Descargar Documento Writer con macro para exportar tres copias en PDF