[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...
Responder
elandriu
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

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

Mensaje por elandriu »

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
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

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

Mensaje por mauricio »

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
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

Mensaje por elandriu »

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
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje por fornelasa »

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

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!
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

Mensaje por elandriu »

Hola y gracias Federico.

Me funcionó perfecto!!!!
Libreoffice 4.4.5 - OSX
Responder