[RESUELTO] Exportar en PDF el area resaltada en amarillo

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

[RESUELTO] Exportar en PDF el area resaltada en amarillo

Notapor marcosAoo » Mar Abr 11, 2017 9:16 pm

Buenos días a todos

Llevo dias batallando :knock: :crazy: por hacer esto:
En la siguiente hoja de calculo:
solo deseo exportar en PDF el area resaltada en amarillo
en paginas tamaño 4X6 Pulgadas


Pienso que :idea: en las siguientes macros, la macro del problema es la que se llama: "Sub Imprimiendo44()"

(¿Que necesito modificar para que mis deseos se hagan realidad? :bravo: solamente exportar en PDF el area resaltada en amarillo
en paginas tamaño 4X6 Pulgadas)


En caso de no ser posible exportar en PDF en 4X6 pulgadas ya me conformo con que solo las celdas seleccionadas sean exportadas a PDF y que "ocupen toda la pagina"

Adjunto 2 pdf creo que los nombres de los pdf son muy descriptivos.

Este es el codigo que estoy usando:
Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit

'http://oooug.jp/faq/index.php?faq%2F4b%2F1069


Sub ExportarPDF()
Dim oDoc As Object
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
Dim sRuta As String
Dim oHojaActiva As Object
Dim sValor As String
Dim sRutaURL As String
Dim sRutaCompleta As String
Dim oCelda As Object
Dim sNombre As String
Dim Rangos As String
Dim Nombre_Final As String
Dim mAI(2) As New com.sun.star.table.CellRangeAddress   
   GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
   'Referencia al documento desde donde se llama la macro
   oDoc = ThisComponent
   Call BorrarAreasImpresion( oDoc )      
   'CONSTRUIMOS EL DIRECTORIO DONDE ESTA GUARDADA LA HOJA DE CALCULO
   
   'Referencia al documento activo
   sRutaURL = ThisComponent.getURL()
   'Convertimos la ruta URL en formato local
   sRutaCompleta = ConvertFromUrl( sRutaURL )
   'Obtenemos solo el nombre del archivo
   sNombre = FileNameOutOfPath( sRutaURL )
   'Obtenemos el directorio donde esta el archivo
   sRuta = DirectoryNameoutofPath(sRutaCompleta, GetPathSeparator())
   
   'SELECCIONAMOS CELDAS A IMPRIMIR
             'Rango "U1:AC57"
   mAI(0).Sheet = 0
   mAI(0).StartColumn = 0
   mAI(0).StartRow = 0
   mAI(0).EndColumn = 15
   mAI(0).EndRow = 28
      'Agregamos las áreas de impresión
   ThisComponent.getCurrentController.getActiveSheet.setPrintAreas( mAI() )
         
   Call Imprimiendo44()
            
   'CONTRUIMOS EL NOMBRE DE ARCHIVO
         
   'Referencia a la hoja activa
   oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
      'Referencia a la celda B4   
   oCelda = oHojaActiva.getcellRangeByName( "B4" )
   
   sValor = oCelda.getString()
   
   sValor = CStr(sValor)
   Nombre_Final = Join( split( sValor,"/"),"_",)
         
   'Establecemos el tipo de filtro
   mOpciones(0).Name = "FilterName"
   'Construimos el filtro correcto PDF para cada aplicacion
   mOpciones(0).Value = LCase("Calc") & "_pdf_Export"
   sRuta = ConvertToUrl(sRuta & "/" & Nombre_Final) & ".pdf"

   'Guardamos el archivo
   oDoc.storeToURL( sRuta, mOpciones() )

End Sub

Sub Imprimiendo44()
'Matriz para las opciones de impresión
Dim mOpc(2) As New com.sun.star.beans.PropertyValue
Dim mDI(2) As New com.sun.star.beans.PropertyValue
Dim PaperSize as New com.sun.star.awt.Size

   mDI(0).Name = "Name"
   mDI(0).Value = "cups-pdf"
   mDI(1).Name = "PaperOrientation"
   mDI(1).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
   
   PaperSize.Width = 10240
    PaperSize.Height = 6000
   
   mDI(2).Name = "PaperSize"
   mDI(2).Value = com.sun.star.view.PaperFormat.USER
'   ThisComponent.setPrinter( mDI )
   
   'El número de copias
   mOpc(0).Name = "CopyCount"
   mOpc(0).Value = 1
   'Si se imprimen en juegos
   mOpc(1).Name = "Collate"
   mOpc(1).Value = True
   'Las páginas a imprimir
   mOpc(2).Name = "Pages"
   mOpc(2).Value = "1"

'   thisComponent.Print( mOpc() )
    End Sub
   
   
'Macro para borrar todas las áreas de impresión del archivo
Sub BorrarAreasImpresion( Archivo As Object)
Dim oHoja As Object

   For Each oHoja In Archivo.Sheets
      oHoja.setPrintAreas( Array() )
   Next

End Sub
Adjuntos
MarcosAoo.pdf
RESULTADO INDESEADO
(68.97 KiB) 87 veces
RESULTADO DESEADO .pdf
ESTO ES LO QUE QUIERO LOGRAR COMO RESULTADO
(28.04 KiB) 91 veces
s21 foro.ods
ESTE ES EL ARCHIVO
(24.86 KiB) 92 veces
Última edición por mauricio el Mié Abr 12, 2017 11:09 pm, editado 2 veces en total
Razón: Marcar icono de resuelto
LibreOffice 6.2.4.2 Con LINUX MINT 19 Cinammon 64 Bits
marcosAoo
 
Mensajes: 25
Registrado: Mié Dic 31, 2014 7:22 am

Re: Exportar en PDF el area resaltada en amarillo

Notapor fornelasa » Mié Abr 12, 2017 8:21 pm

marcosAoo escribió:En caso de no ser posible exportar en PDF en 4X6 pulgadas ya me conformo con que solo las celdas seleccionadas sean exportadas a PDF y que "ocupen toda la pagina"

Además de lo que has hecho, todo esto parece ser un problema de ajustar margenes de impresión y de ancho de columnas optimas.
Si te sirviera, mira este archivo para una hoja tamaño carta.
Adjuntos
s21 foro (1).ods
Ajuste de pdf
(24.16 KiB) 122 veces
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: 3234
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Exportar en PDF el area resaltada en amarillo

Notapor marcosAoo » Mié Abr 12, 2017 9:43 pm

Fornelasa eres un campeon :bravo: de las macros, gracias a personas como ustedes es posible aprender a usar el software libre.

Me sirvio y voy a dar por solucionado este tema. :mrgreen:

Ademas me sirvio para este tema este otro hilo: https://forum.openoffice.org/es/forum/v ... pdf#p49819

Gracias fornelasa por tu valioso tiempo.
Pasa buen día gracias.
LibreOffice 6.2.4.2 Con LINUX MINT 19 Cinammon 64 Bits
marcosAoo
 
Mensajes: 25
Registrado: Mié Dic 31, 2014 7:22 am


Volver a Macros y API UNO

¿Quién está conectado?

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