Page 1 sur 1
[Résolu][Calc] Export PDF uniquement de la sélection
Publié : 16 mai 2009 16:57
par tytof4042
Bonjour à tous...après avoir parcouru le forum je n'ai pas trouvé comment exporter uniquement ma selection de maniere automatique.
Je dois faire apparaitre le menu PDF pour la selectionner manuellement.
En macro en utilisant selection ou selectiononly toutes mes feuilles sont selectionnées
Pourtant avec l'enregistreur de macro j'ai testé avec et sans sélection pour voir s'il y avait une nuance (parfois tout ne passe pas) et on voit bien apparaitre selection mais sans succès.
Re: [Calc] Export PDF
Publié : 16 mai 2009 19:51
par Grenouille
Bonsoir,
tytof4042 a écrit :après avoir parcouru le forum je n'ai pas trouvé comment exporter uniquement ma selection de maniere automatique
Pourtant avec les mots de ton titre |export +
pdf|, j'obtiens :
http://user.services.openoffice.org/fr/ ... export+pdf
A+
Re: [Calc] Export PDF
Publié : 16 mai 2009 20:29
par tytof4042
j'avais déjà consulté ces topics mais sans trouver de réponse..je mets mon code simplifié:
Code : Tout sélectionner
sub ZoneImpression
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'Définition de la zone
Dim origZone(0) as new com.sun.star.beans.PropertyValue
origZone(0).Name = "ToPoint"
origZone(0).Value = "$B$3:$S$18"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, origZone())
dispatcher.executeDispatch(document, ".uno:ChangePrintArea", "", 0, Array())
end sub
sub ExporterPDF
ZoneImpression
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SelectionOnly"
args2(0).Value = 1
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "URL"
args2(2).Value = "C:/AdresseFichier.pdf"
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
end sub
Les propriétés pour sélectionner une feuille ("PageRange"ou "pages") ne peuvent pas s'appliquer je ne désire qu'une zone d'impression
je remets le fichier l'ancien code ne fonctionnait pas je crois
Re: [Calc] Export PDF
Publié : 17 mai 2009 07:56
par Pierre-Yves Samyn
Bonjour
tytof4042 a écrit :j'avais déjà consulté ces topics mais sans trouver de réponse
...
Les propriétés pour sélectionner une feuille ("PageRange"ou "pages") ne peuvent pas s'appliquer je ne désire qu'une zone d'impression
Peut-être n'as-tu pas bien lu car le premier exemple donné correspond exactement à ta demande et il ajoute la gestion de la page
au cas où la zone d'impression en générerait plusieurs.
Si tu ne veux pas gérer cela (plage tenant sur une page à l'impression), il suffit de commenter / modifier le code comme ceci (ici export de la page $A$1:$B$7) :
Code : Tout sélectionner
sub ExportPDF
dim document as object, dispatcher as object
dim args1(0) as new com.sun.star.beans.PropertyValue
' dim propFich(1) As New com.sun.star.beans.PropertyValue
dim propFich(0) As New com.sun.star.beans.PropertyValue
' dim filterProps(0) as new com.sun.star.beans.PropertyValue
dim adresseDoc as string
' filterProps(0).Name = "PageRange"
' filterProps(0).Value = "2"
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$B$7"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
' Création de la zone d'impression décrite au dessus
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, args1())
propFich(0).Name = "FilterName"
propFich(0).Value = "calc_pdf_Export"
' propFich(1).Name = "FilterData"
' propFich(1).Value = filterProps()
adresseDoc = convertToURL("c:\OOomacros\test.pdf")
thiscomponent.storeToURL(adresseDoc, propFich())
end sub
Re: [Résolu][Calc] Export PDF
Publié : 17 mai 2009 16:26
par tytof4042
Ok en fait j'avais plusieurs soucis...le premier j'utilisais le dispatcher avec export qui m'envoyait sur le menu
PDF
Le second était qu'en fait, pour imprimer seulement ma zone d'impression sur un seul onglet, il faut effacer les autres zones d'impression du document, ma méthode est un peu lourde mais je n'en connais pas de plus simple je poste la macro pour ceux que ca intéresse car sur les autres posts personne ne parlait d'effacer les anciennes zones d'impression .
Code : Tout sélectionner
Sub SupprimerZone
'Suppression de l'ancienne de la zone
Dim Cond as string
Cond = monDocument.CurrentController.ActiveSheet.getname
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
ActivationFeuille("Table") 'Function a créer
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
ActivationFeuille("Commande MDA")
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
ActivationFeuille("Commande SEA")
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
ActivationFeuille("Commande RVL")
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
ActivationFeuille(Cond)
End Sub
sub ZoneImpression
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'COMPTEUR
Dim sMatrice as String
oAcces = CreateUnoService("com.sun.star.sheet.FunctionAccess")
sFonction = "COUNTA" 'fonction NBVAL sous Calc
sMatrice = "B4:B65000"
monDocument = ThisComponent
Dim argA(0), NB as Long
maFeuille = monDocument.CurrentController.ActiveSheet
argA(0) = maFeuille.getCellRangeByName(sMatrice)
NB = oAcces.callFunction(sFonction,argA())
Dim Cond as string
Cond = monDocument.CurrentController.ActiveSheet.getname
'Définition de la zone
Dim origZone(0) as new com.sun.star.beans.PropertyValue
Dim origLigne as Integer
Dim destLigne as Integer
if Cond = "Commande MDA" OR Cond = "Commande SEA" OR Cond = "Commande RVL" then
origLigne = 2
destLigne = origLigne+NB+1
origZone(0).Name = "ToPoint"
origZone(0).Value = "$B$"+origLigne+":$S"+destLigne
end if
if Cond = "Table" then
origLigne = 1
destLigne = origLigne+NB
origZone(0).Name = "ToPoint"
origZone(0).Value = "$A$"+origLigne+":$AX"+destLigne
end if
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, origZone())
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "PrintArea"
args2(0).Value = origZone(0).Value
args2(1).Name = "PrintRepeatRow"
args2(1).Value = ""
args2(2).Name = "PrintRepeatCol"
args2(2).Value = ""
dispatcher.executeDispatch(document, ".uno:ChangePrintArea", "", 0, args2())
end sub
sub ExporterPDF
'SupprimerZone
ZoneImpression
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Dim AdresseFichier As String, NomFichier As String
If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") then
GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If
sDocUrl = ThisComponent.URL
sDocChemin = DirectoryNameoutofPath(sDocUrl, "/")
nomFichier = "Export liste"
AdresseFichier = sDocChemin & "/" & nomFichier & ".pdf"
dim propFich(1) As New com.sun.star.beans.PropertyValue
propFich(0).Name = "FilterName"
propFich(0).Value = "calc_pdf_Export"
propFich(1).Name = "URL"
propFich(1).Value = AdresseFichier
thiscomponent.storeToURL(AdresseFichier, propFich())
end sub