Michel Blanchard Export PDF

Bonjour à tous,

Je suis en train de construire une macro CALC pour exporter UNE SEULE FEUILLE au format PDF.
Tout est ok, sauf que la macro m'exporte TOUT le classeur !

Voilà le code :

Sub ExportPDF
    Dim oDoc As Object , Feuille As Object, Cellule As Object
    Dim Chemin As String, Fichier As String
    Dim ArgPdf(0) as new com.sun.star.beans.PropertyValue

oDoc = ThisComponent

Chemin = "D:\Libre Office\LOCalc\AFPP-Calc\Calc_spécial\" '----- Chemin de sauvegarde

Feuille = oDoc.Sheets.getByName("facture") '----- nom de la feuille
    Cellule = Feuille.getCellRangeByName ("C2") '----- récupération du numéro de facture pour l'inclure dans le nom du PDF
    Fichier = Cellule.getString & ".pdf"
    ArgPdf(0).Name = "FilterName"
    ArgPdf(0).Value = "calc_pdf_Export"

Msgbox Chemin & "\" & Fichier

oDoc.storeToURL(convertToUrl(Chemin & Fichier),ArgPdf())
    MsgBox("Fin export pdf")

End sub

L'idéal serait de définir dans la macro une zone d'impression et de n'exporter que cette zone.

Mais je sèche !!
Merci de vos conseils

Michel

Bonjour,
Il faut trouver la propriété qui correspond au bouton radio "Sélection/Feuille(s) selectionnée(s) dans l'onglet Général de la fenêtre d'export.....
Bonne soirée,
JMC

Bonjour,

Si on connaît le no de la page ou des pages, c'est facile:

filterProps(0).Name = "PageRange"
    filterProps(0).Value = "2"    (ou une plage: "2-5")

Mais avec des classeurs qui évoluent, dont je ne suis pas toujours utilisateur et dont les zones d'impression pourraient être modifiées, j'ai trouvé il y a très longtemps l'astuce suivante:

1) je parcours le classeur pour lire et mémoriser toutes les zones d'impression.

2/ je mets toutes les zones à "aucune"

3) je paramètre la feuille à imprimer avec la plage souhaitée

4) je crée le PDF

5) je reporte dans le classeur les zones mémorisées pour le remettre dans l'état initial

Comme ça m'a résolu parfaitement mon problème, je n'ai jamais cherché à faire mieux. Je pourrais, mais pas de suite, te donner le code.

Bonsoir Michel,

Je suis en train de construire une macro CALC pour exporter UNE SEULE FEUILLE au format PDF.
Tout est ok, sauf que la macro m'exporte TOUT le classeur !

Voilà le code :

Sub ExportPDF
    Dim oDoc As Object , Feuille As Object, Cellule As Object
    Dim Chemin As String, Fichier As String
    Dim ArgPdf(0) as new com.sun.star.beans.PropertyValue

oDoc = ThisComponent

Chemin = "D:\Libre Office\LOCalc\AFPP-Calc\Calc_spécial\" '----- Chemin de sauvegarde

Feuille = oDoc.Sheets.getByName("facture") '----- nom de la feuille
    Cellule = Feuille.getCellRangeByName ("C2") '----- récupération du numéro de facture pour l'inclure dans le nom du PDF
    Fichier = Cellule.getString & ".pdf"
    ArgPdf(0).Name = "FilterName"
    ArgPdf(0).Value = "calc_pdf_Export"

il manque une propriété "Selection" ayant comme valeur la plage à exporter.
Le plus simple, il me semble, est en effet de définir une zone d'impression et de récupérer sa plage (objet Range) comme paramètre Value de la sélection.

Amicalement,