Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
bonsoir,
je cherche à faire une macro pour enregistrer une partie de mon fichier en PDF (la zone d'impression) en utilisant comme nom le contenu de la cellule j8 de ma feuille
Pour le momment l'enrégistrement fonctionne mais s'arrete sur la boite de Dialogue de l'imprimante CutePDF Writer ou je dois mettre manuellement le nom et valider l'enrégistrement du fichier. Je n'arrive pas à nommer le fichier automatiquement avec le contenu de la celulle.
sub 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 = "Printer"
args1(0).Value = "CutePDF Writer"
dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Copies"
args2(0).Value = 1
args2(1).Name = "Collate"
args2(1).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
end sub
Dernière modification par Oukcha le 15 janv. 2009 06:07, modifié 4 fois.
Raison :Pose balise (coche présente)
merci de t'intéresser à mon problème.
Effectivement je suis nouveau sur le forum, je viens de passer il y a 15 jours d'excel sur oo que je trouve pas mal d'omage que je plane dans les macros.
Je vais aller voir le lien que tu ma indiqué
Dernière modification par jmsch le 06 janv. 2009 21:47, modifié 1 fois.
Grenouille a écrit :Le terme macro est inutile dans le titre d'une question postée dans la section... Macro et la balise n'est pas correct : [Calc]
jmsch a écrit :Effectivement je suis nouveau sur le forum
J'ai (encore) corrigé votre titre et encadré le code de votre message. Merci de le faire vous même la prochaine fois.
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
J'ai essayé ça mais la ça enrégistre le fichier complet au format ods moi il me faut juste une zone(la zone d'impression celulle b1:h33 et au format pdf
je vais donc continuer mes recherches mais je ne suis pas sur d'être sur la bonne voie.
sub enregistre
rem ----------------------------------------------------------------------
rem definitions des variables
rem ----------------------------------------------------------------------
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
rem ----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem Récupération du contenu de la cellule B8
rem ----------------------------------------------------------------------
MonDoc = ThisComponent
MaFeuil = MonDoc.CurrentController.ActiveSheet
MonTxt = MaFeuil.GetCellRangeByName("j8").String
rem ----------------------------------------------------------------------
rem Enregistrement du nouveau fichier
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///D:/Documents/pdf/" & MonTxt & ".ods"
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
args1(2).Name = "SelectionOnly"
args1(2).Value = true
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
rem ----------------------------------------------------------------------
rem fin de la macro
rem ----------------------------------------------------------------------
end sub
jmsch a écrit :ça enrégistre le fichier complet au format ods
Je t'ai indiqué ce 1er fil pour te montrer comment on récupère un nom de cellule. Si tu es débutant, tu dois décomposer ton problème 'complexe' en sous-problèmes 'élémentaires'.
Si je prends ton cas :
1- récupération du nom de cellule dans une chaîne texte
2- récupération d'une zone de cellule
3- export au format pdf
Voila le code que j'ai fait et qui me sauve les devis au format pdf avec le nom voulue dans le dossier de mon choix.
Elle pourait surement etre amélioré mais elle fonctionne
Sub devis_pdf
Dim mondocument as object
Dim propFich(0) as New com.sun.star.beans.PropertyValue
Dim adressedoc as string
Dim nomclient as string, url as string, repertoire as string, extension as string
mondocument = thisComponent
repertoire = "file:///D:/documents jm/martin/facturier/devis_pdf/"
rem ----------------------------------------------------------------------
rem Récupération du contenu de la cellule u26
rem ----------------------------------------------------------------------
MonDoc = ThisComponent
MaFeuil = MonDoc.CurrentController.ActiveSheet
MonTxt = MaFeuil.GetCellRangeByName("u26").String
rem ----------------------------------------------------------------------
extension = ".pdf"
url = repertoire + MonTxt + extension
adressedoc = converttourl(url)
propFich(0).Name = "FilterName"
propFich(0).Value = "calc_pdf_Export"
mondocument.storeToURL( adressedoc, propFich())
End Sub