Page 1 sur 1

[Résolu]Exporter une série de documents en PDF

Publié : 18 sept. 2006 12:36
par filobedo
Bonjour à tous

Alors voici mon problème :
J’ai quelques centaines de fichiers excel que je voudrais convertir en PDF (un doc PDF par fichier excel). Les fichiers se nomment 1.xls, 2.xls…. etc. et doivent se convertir en 1.pdf, 2.pdf…
J’ai réussi à récupérer un code qui fonctionne, qui ouvre un fichier xls avec Calc puis l’exporte :

Code : Tout sélectionner

sub ExportDocumentPDF
'
rem define variables
dim doc as object, desktop as object
dim args() as new com.sun.star.beans.PropertyValue
	oDesktop=createUnoService("com.sun.star.frame.Desktop")	
	i = 1	
	sUrl="file:///C:/…/" & i & ".xls"
	doc=oDesktop.loadComponentFromURL(surl,"_blank",0,args())

	Dim PDFArgs(1) as new com.sun.star.beans.PropertyValue
	PDFArgs(0).Name = "FilterName"
	PDFArgs(0).Value = "calc_pdf_Export"	
	PDFArgs(1).Name = "CompressMode"
	PDFArgs(1).Value = 0 '
	doc.storeToURL("file:///C:/…/" & i & ".pdf",PDFArgs())

	doc.dispose()
		
	end sub
Le problème est que je n’arrive pas à faire mon itération sur i (for i = 1 to n…, next i) : la macro bloque dès que i = 2 (sur doc.storeToURL("file:///C:/…/" & i & ".pdf",PDFArgs()))

Merci pour votre aide :roll:

Re: Exporter une série de documents en PDF

Publié : 18 sept. 2006 12:42
par Dude
filobedo a écrit :Le problème est que je n’arrive pas à faire mon itération sur i (for i = 1 to n…, next i) : la macro bloque dès que i = 2 (sur doc.storeToURL("file:///C:/…/" & i & ".pdf",PDFArgs()))
Montre nous ton code avec la boucle. C'est mieux !

:!:

Publié : 18 sept. 2006 12:50
par filobedo
La boucle est d'une grande finesse : :wink:

Code : Tout sélectionner

sub ExportDocumentPDF
'
'
	dim doc as object, desktop as object
	dim args() as new com.sun.star.beans.PropertyValue
	dim i as integer
	rem get access to the document
	oDesktop=createUnoService("com.sun.star.frame.Desktop")	
	for i = 1 to = 4	
	sUrl="file:///C:/chemin/" & i & ".xls"
	doc=oDesktop.loadComponentFromURL(surl,"_blank",0,args())
	Dim PDFArgs(1) as new com.sun.star.beans.PropertyValue
		PDFArgs(0).Name = "FilterName"
		PDFArgs(0).Value = "calc_pdf_Export"	
		PDFArgs(1).Name = "CompressMode"
		PDFArgs(1).Value = 0 

	doc.storeToURL("file:///C:/chemin/" & i & ".pdf",PDFArgs())

	doc.dispose()
                next i
		
	end sub

Publié : 18 sept. 2006 12:52
par filobedo
Il fallait bien entendu lire "for i = 1 to 4" et non "for i = 1 to = 4"....le problème ne vient pas de là :oops:

Publié : 18 sept. 2006 13:22
par Dude

Code : Tout sélectionner

Dim PDFArgs(1)
Enlève cette déclaration de ta boucle

Publié : 18 sept. 2006 13:34
par filobedo
Merci ça marche !

Voici donc le bon code :

Code : Tout sélectionner

sub ExportDocumentPDF

	rem define variables
	dim doc as object, desktop as object
	dim args() as new com.sun.star.beans.PropertyValue
	dim i as integer
	oDesktop=createUnoService("com.sun.star.frame.Desktop")	
	Dim PDFArgs(1) as new com.sun.star.beans.PropertyValue
	i = 1
	do while i < 4	
	sUrl="file:///C:/chemin/" & i & ".xls"
	doc=oDesktop.loadComponentFromURL(surl,"_blank",0,args())
		
	PDFArgs(0).Name = "FilterName"
	PDFArgs(0).Value = "calc_pdf_Export"	
	PDFArgs(1).Name = "CompressMode"
	PDFArgs(1).Value = 0 'Valeurs possibles : 0 - 1 - 2

	doc.storeToURL("file:///C:/chemin/" & i & ".pdf",PDFArgs())

	doc.dispose()
	i = i + 1
	loop
		
end sub
Code très pratique pour ceux qui en ont l'utilité bien sûr :D

PS : je ne sais pas comment mettre (résolu)...

Publié : 18 sept. 2006 13:54
par Dr. NOOo
filobedo a écrit :PS : je ne sais pas comment mettre (résolu)...
http://user.services.openoffice.org/fr/ ... pic83.html