+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Macro per salvare in pdf il contenuto di celle di Calc

  1. #1
    Kiuba non  in linea Novello
    Buongiorno, utilizzo LibreOffice nella recente versione 7.0.4.2 e vorrei salvare in PDF il contenuto di alcune celle di un foglio di Calc attraverso una macro.

    In particolare parto da un file con pi fogli; nel foglio sheet_3 sono presenti i seguenti dati:
    - nella cella A2 presente il nome XXXXX
    - nella cella B2 presente il cognome YYYYY
    - nell'area B3:F9 presente il testo che vorrei portare in un file pdf

    Vorrei salvare il tutto nella directory C:\\magazzino\ con il nome XXXXX_YYYYY_magazzino.pdf.

    Spero di essermi spiegato in modo abbastanza chiaro..
    Qualcuno riesce a darmi una mano?? .. purtroppo non ho esperienza di macro in calc..

  2. #2
    Va bene che non hai esperienza per, se non sbaglio dato che non lo uso, esiste un registratore di macro con cui puoi iniziare a buttare gi qualcosa. Prova e facci sapere.
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    Kiuba non  in linea Novello
    Con il registratore di macro riesco a salvare l'area selezionata e ottenere la macro. Per non riesco a dare il nome al file usando i dati delle celle A2 e B2.
    In pi nel file generato c' il nome del foglio posizionato sopra al contenuto delle celle esportate. Non riesco a capire come fare a toglierlo.
    Allego macro
    sub esporta_pdf
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = "$B$3:$F$9"
    
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
    
    rem ----------------------------------------------------------------------
    dim args2(2) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "URL"
    args2(0).Value = "file:///C:/magazzino/XXX.pdf"
    args2(1).Name = "FilterName"
    args2(1).Value = "calc_pdf_Export"
    args2(2).Name = "FilterData"
    args2(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFUACompliance",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ViewPDFAfterExport",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SinglePageSheets",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportPlaceholders",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Watermark",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureLocation",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureReason",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureContactInfo",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignaturePassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureCertificate",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureTSA",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseReferenceXObject",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE))
    
    dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
    
    
    end sub
    
    Cos spero sia pi chiaro, grazie

  4. #4
    Quote Originariamente inviato da Kiuba Visualizza il messaggio
    Per non riesco a dare il nome al file usando i dati delle celle A2 e B2.
    Google, grande aiuto per chi come me ha usato LibreOffice per non comprare Office
    Quote Originariamente inviato da Kiuba Visualizza il messaggio
    dim args2(2) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "URL"
    args2(0).Value = "file:///C:/magazzino/XXX.pdf"
    args2(1).Name = "FilterName"
    args2(1).Value = "calc_pdf_Export"
    args2(2).Name = "FilterData"
    ...
    
    fonte: [Risolto] esportazione pdf solo selezione
    rem ----------------------------------------------------------------------
    dim args3(2) as new com.sun.star.beans.PropertyValue
    args3(0).Name = "URL"
    args3(0).Value = "file:///PERCORSOSALVATAGGIO/NOMEFILE.PDF"      '-----  QUI INDICARE IL PERCORSO / NomeFIle.PDF di salvataggio
    args3(1).Name = "FilterName"
    args3(1).Value = "calc_pdf_Export"
    args3(2).Name = "FilterData"
    
    Per il nome del foglio posizionato sopra le celle credo si tratti di toglierlo dall'intestazione, da men, non con codice.

  5. #5
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Per il nome del foglio posizionato sopra le celle credo si tratti di toglierlo dall'intestazione, da men, non con codice.
    La butto li... Magari impostare a False
    ...
    Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),
    ...
    

  6. #6
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    La butto li... Magari impostare a False
    ...
    Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),
    ...
    
    C'avevo buttato occhio ma a dar retta a questo link
    https://wiki.openoffice.org/wiki/API...als/PDF_export
    DisplayPDFDocumentTitle: Specifies that the title of the document, if present in the document properties, is displayed in the PDF viewer window title bar.
    Type: boolean
    Default Value: true
    credo significhi altro. Lo so che il link di OpenOffice e non di LibreOffice ma sono parenti strettissimi

  7. #7
    Kiuba non  in linea Novello
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Google, grande aiuto per chi come me ha usato LibreOffice per non comprare Office


    Per il nome del foglio posizionato sopra le celle credo si tratti di toglierlo dall'intestazione, da men, non con codice.
    Cambiando il nome della directory di destinazione non risolvo il problema.

    Vorrei che il nome del file salvato dipendesse dal contenuto delle celle indicate, perch cambier regolarmente il loro contenuto e vorrei quindi che il nome del file cambiasse di conseguenza.

    Nella finestra di salvataggio c' la spunta per mettere o meno il nome del foglio, ma provando a togliere la spunta non cambia nulla.

  8. #8
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    credo significhi altro.
    Si... Temo tu abbia ragione. Ho cercato la documentazione ma non sono riuscito a trovarla.


    Quote Originariamente inviato da Kiuba Visualizza il messaggio
    Vorrei che il nome del file salvato dipendesse dal contenuto delle celle indicate
    Allora credo tu debba impostarlo... Dove ti ha gi indicato Phil, nei post precedenti, invece di settare una stringa fissa devi mettere il valore della cella. Prova a leggere questo link e ricorda che Google tuo amico, e sa quasi tutto. :-)

  9. #9
    Quote Originariamente inviato da Kiuba Visualizza il messaggio
    Vorrei che il nome del file salvato dipendesse dal contenuto delle celle indicate,
    Devo cercare io la soluzione con un motore di ricerca? l'ho trovata, se per quello, t'ho detto dove agire, adesso uno sforzo minimo su come si costruisce una stringa... (ecco... io ero in pausa edit e Sgrubak l'ha gi detto)
    Quote Originariamente inviato da Kiuba Visualizza il messaggio
    Nella finestra di salvataggio c' la spunta per mettere o meno il nome del foglio, ma provando a togliere la spunta non cambia nulla.
    No, devi andare nel men - Inserisci - Intestazione e pi di pagina... e togliere da l quello che c'.
    Se invece devi toglierlo SOLO nell'esportazione in PDF fai la stessa cosa di prima:
    registri la macro e in quella che si usa per l'esportazione in pdf aggiungi il codice che toglie il nome del foglio dall'intestazione, ricordandoti poi di rimetterla, se la devi mantere.

  10. #10
    Kiuba non  in linea Novello
    Ecco quello che sono riuscito a fare grazie ai vostri suggerimenti.
    sub esporta_pdf2
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    Dim oSheets
    Dim oSheet
    Dim oCell
    Dim Nome as string
     
    oSheets = ThisComponent.getSheets()
    oSheet = oSheets.getByIndex(0)
    oCell = oSheet.getCellByPosition(0, 1) 
    Nome = oCell.Value
    
    
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = "$B$3:$F$9"
    
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
    
    rem ----------------------------------------------------------------------
    dim args2(2) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "URL"
    args2(0).Value = "file:///C:/magazzino/"  & Nome &  "lyyy.pdf"
    args2(1).Name = "FilterName"
    args2(1).Value = "calc_pdf_Export"
    args2(2).Name = "FilterData"
    args2(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFUACompliance",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ViewPDFAfterExport",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SinglePageSheets",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportPlaceholders",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Watermark",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureLocation",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureReason",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureContactInfo",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignaturePassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureCertificate",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureTSA",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseReferenceXObject",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE))
    
    dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
    
    
    end sub
    
    Probabilmente si pu semplificare ulteriormente, ma le mie conoscenze non me lo permettono. Ad esempio in questo modo scelgo i fogli in base alla loro posizione, mentre preferirei richiamarli per nome.

    Per chi pratico di questo tipo di codice non deve essere complicato trovare degli esempi utili usando un motore di ricerca, io ho fatto fatica a capire come usare il vostro suggerimento, probabilmente se avessi trovato la pagina da solo non mi sarei accorto che conteneva quello che cercavo. Cercate di avere pazienza.

    Adesso la macro funziona se nella cella A2 presente un numero, mentre se presente del testo la variabile nome viene posta uguale a 0. Probabilmente non devo usare oCell.Value per riempire la variabile Nome alla riga 14, ma qualche propriet che prenda il testo e non il numero. Di nuovo non riesco a capire come si fa.. Avete qualche suggerimento?

    Il problema del nome del foglio in testa al documento risolto, grazie.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. OpenOffice Calc: formattare da programma parte del contenuto di una cella
    Da Brontolo nel forum LibreOffice, OpenOffice e altro
    Risposte: 3
    Ultimo Post: 05-01-2017, 12:12
  2. Risposte: 4
    Ultimo Post: 09-11-2016, 11:29
  3. salvare con il contenuto di pi celle
    Da latitanteaitante nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 16-03-2009, 15:31
  4. Macro in Vba per inviare via mail il contenuto di celle
    Da ragnus nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 28-10-2008, 20:03
  5. [Excel]cancellare il contenuto delle celle sbloccate con 1 macro
    Da blackjack71 nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 22-08-2008, 22:45