[RESUELTO] Macro exportar a PDF páginas de la hoja activa

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] Macro exportar a PDF páginas de la hoja activa

Notapor elandriu » Lun Oct 19, 2015 10:27 pm

Hola,
Cuando exporto a PDF usando una Macro, me imprime todas las hojas del documento Calc que tienen algún tipo de intervalo de impresión.
Cómo puedo hacer para que la exportación a PDF sea solo de las páginas de la hoja activa?
Gracias y saludos.
Última edición por elandriu el Mar Oct 20, 2015 10:00 pm, editado 1 vez en total
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Macro para exportar a PDF solo las páginas de la hoja ac

Notapor mauricio » Lun Oct 19, 2015 10:58 pm

Opción 1
Guarda las áreas de impresión...
Borra las que no quieras...
Exporta a PDF...
Restaruas las áreas de impresión...

Opción 2
Obten las áreas de impresión de la hoja activa...
Las seleccionas...
Exportas a PDF estableciendo la opción Selección

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5873
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Macro para exportar a PDF solo las páginas de la hoja ac

Notapor elandriu » Lun Oct 19, 2015 11:33 pm

Hola, gracias por la respuesta.

Es lo que intento hacer y realmente incluye en el PDF el intervalo que le doy y cuando lo imprimo sale correctamente solo el rango dado, pero cuando lo graba en el PDF me agrega también las demás hojas del documento que tienen algún tipo de rango de impresión.
Por eso, no se como decirle que el PDF lo construya solo de la hoja activa.
Un saludo.

Sub Imprimiendoyexportando()
Dim mDI(0) As New com.sun.star.beans.PropertyValue
Dim mAI(0) As New com.sun.star.table.CellRangeAddress

'Rango A7:AB73
mAI(0).Sheet = sHoja
mAI(0).StartColumn = 0
mAI(0).StartRow = 6
mAI(0).EndColumn = 27
mAI(0).EndRow = 72

'Agregamos las áreas de impresión
ThisComponent.getCurrentController.getActiveSheet.setPrintAreas( mAI() )

'Cambiamos la orientación 0 = Vertical, 1 = Horizontal
mDI(0).Name = "PaperOrientation"
mDI(0).Value = 1
ThisComponent.setPrinter( mDI )

Dim mOpc()
ThisComponent.Print( mOpc() )

Dim oDoc As Object
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
Dim sRuta As string
Dim sCelda As String
'Dim sHoja As String
Dim oHojaActiva As Object
Dim oRango As Object

'Referencia al documento desde donde se llama la macro
oDoc = ThisComponent

'Cambia aquí la ruta donde se guardará
sRuta = "/Users/Desarrollo/PDFs/"

'Cambia aquí la hoja donde tomar el nombre
sHoja = "1"

'Cambia aquí la celda donde tomar el nombre
sCelda = "A1"

'Establecemos el tipo de filtro
mOpciones(0).Name = "FilterName"
'Construimos el filtro correcto PDF para cada aplicacion
mOpciones(0).Value = "Calc_pdf_Export"

'Construimos la ruta correcta, usamos los valores de las variables
sRuta = ConvertToURL( sRuta & oDoc.getSheets.getByName( sHoja ).getCellRangeByName( sCelda ).getString() & ".pdf" )

'Guardamos el archivo
oDoc.storeToURL( sRuta, mOpciones() )
msgbox "Archivo exportado"

End Sub
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Macro para exportar a PDF solo las páginas de la hoja ac

Notapor fornelasa » Mar Oct 20, 2015 6:30 pm

Por ejemplo, estando en Calc, si yo deseo exportar como PDF solo la pagina 1 y 2 a un archivo PDF .....
Código: Seleccionar todo   Expandir vistaContraer vista
Sub Exportar_A_PDF
        Dim Args(1) as New com.sun.star.beans.PropertyValue
        Dim pFiltro(0) as New com.sun.star.beans.PropertyValue
     pFiltro(0).Name = "PageRange"
     pFiltro(0).Value = "1-2"
        Args(0).Name = "FilterName"
        Args(0).Value = "calc_pdf_Export"
        Args(1).Name = "FilterData"
        Args(1).Value = pFiltro
     ruta = "C:/Users/Federico/Documents/UnaHoja.pdf" '......... AQUI TU RUTA Y ARCHIVO
     FileURL = convertToURL(ruta)
        ThisComponent.StoreToURL(FileURL, Args)
    End sub

Si quiero la pagina 1 y 3 debe ser "1,3"
Si quiero la pagina 1 debe ser "1-1"
Etc.

En la macro anterior, de las hojas y rangos de impresion que tengamos solo exportará las paginas que le digamos .....

Tal vez vaya por ahí el tema.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para exportar a PDF solo las páginas de la hoja ac

Notapor elandriu » Mar Oct 20, 2015 9:57 pm

Hola y gracias Federico.

Me funcionó perfecto!!!!
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados