Macro Calc convertire tutti i file in cartella .XLS in .PDF

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Darkpunkers
Messaggi: 5
Iscritto il: mercoledì 5 settembre 2018, 21:05

Macro Calc convertire tutti i file in cartella .XLS in .PDF

Messaggio da Darkpunkers »

Buonasera a tutti,

chiederei cortesemente aiuto, se fattibile, a qualche Guru di Basic, in quanto avrei bisogno di una Macro per Calc di Openoffice, che converta in PDF tutti i documenti .xls presenti in una data cartella.
Il percorso della suddetta cartella può anche essere lo stesso del file .xls che conterrà la macro....

Provengo da una piccola esperienza con VBA di Excel, ed è proprio un altro mondo il Basic...sono parecchio spaesato.

Premetto di aver già cercato con la funzione "Cerca" del Forum, come da suggerimenti dislocati in varie zone dello stesso Forum, ma non ho trovato nulla che possa fare al caso mio... :crazy:

Ringrazio anticipatamente chi potrà in qualche modo aiutarmi :roll:
Windows 7 - Openoffice 4.1.5
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da charlie »

Argomento spostato.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da patel »

prova questa modificando i percorsi

Codice: Seleziona tutto

Sub PDFconvert_InFolder
Dim DocName as object, DocUlr as string, dummy()
Dim mStoreOpts(1) As New com.sun.star.beans.PropertyValue
sPath ="F:\Download\" ' cartella con i file xls
destPath ="F:\Download\A\"  ' cartella destinazione pdf
sFileName = Dir(sPath & "*.xls", 0)
Do While (sFileName <> "")
   DocUrl = ConvertToURL(sPath & sFileName)
   DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
   mStoreOpts(0).Name = "Overwrite"
   mStoreOpts(0).Value = True
   mStoreOpts(1).Name = "FilterName"
   mStoreOpts(1).Value = "calc_pdf_Export"
   sUrl =  destPath & sFileName & ".PDF"
   DocUrl = ConvertToURL(sUrl)
   DocName.storeToURL(DocUrl, mStoreOpts())
   DocName.Close(true) 
   sFileName = Dir
Loop

End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Darkpunkers
Messaggi: 5
Iscritto il: mercoledì 5 settembre 2018, 21:05

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da Darkpunkers »

Innanzitutto, chiedo scusa per il ritardo con il quale rispondo, ma per fortuna ho dovuto assolvere il duro compito delle ferie... :)
charlie ha scritto:Argomento spostato.

chiedo nuovamente scusa per l'eventuale errore... :-|
patel ha scritto:prova questa modificando i percorsi

Codice: Seleziona tutto

Sub PDFconvert_InFolder
Dim DocName as object, DocUlr as string, dummy()
Dim mStoreOpts(1) As New com.sun.star.beans.PropertyValue
sPath ="F:\Download\" ' cartella con i file xls
destPath ="F:\Download\A\"  ' cartella destinazione pdf
sFileName = Dir(sPath & "*.xls", 0)
Do While (sFileName <> "")
   DocUrl = ConvertToURL(sPath & sFileName)
   DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
   mStoreOpts(0).Name = "Overwrite"
   mStoreOpts(0).Value = True
   mStoreOpts(1).Name = "FilterName"
   mStoreOpts(1).Value = "calc_pdf_Export"
   sUrl =  destPath & sFileName & ".PDF"
   DocUrl = ConvertToURL(sUrl)
   DocName.storeToURL(DocUrl, mStoreOpts())
   DocName.Close(true) 
   sFileName = Dir
Loop

End Sub
Grazie Patel, sei un Genio... :bravo: non so davvero come ringraziarti, funziona alla grande e mi hai aperto la mente :super: :super: :super:
Giusto per la cronaca, grazie alle informazioni presenti in un altro tuo post presente sul forum, ho aggiunto una piccola modifica che permette di scegliere la cartella nella quale sono presenti i file da convertire.

Grazie ancora e ci si legge in giro per il forum, penso che bazzicherò spesso da queste parti... :ugeek: Ciao
Windows 7 - Openoffice 4.1.5
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da patel »

grazie del riscontro, ti dispiace condividere il codice da te modificato ? potrebbe essere utile ad altri.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Darkpunkers
Messaggi: 5
Iscritto il: mercoledì 5 settembre 2018, 21:05

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da Darkpunkers »

patel ha scritto:grazie del riscontro, ti dispiace condividere il codice da te modificato ? potrebbe essere utile ad altri.
Certamente, mi sembra il minimo :super:
Ho anche fatto una piccola modifica per evitare che i file venissero salvati con la doppia estensione ".xls.pdf", anche se non pregiudicava il corretto funzionamento :super: e messo un messaggio con il numero dei documenti convertiti :super: :super: :super:

Codice: Seleziona tutto

Sub XLStoPDFconvert_InFolder
Dim DocName as object, DocUlr as string, dummy()
Dim mStoreOpts(1) As New com.sun.star.beans.PropertyValue
sPath =ChooseADirectory() & "/"
destPath =sPath & "/File_Pdf/"  ' cartella destinazione pdf
sFileName = Dir(sPath & "/*.xls", 0)
Cont=0
Flag=0
Do While (sFileName <> "")
   DocUrl = ConvertToURL(sPath & sFileName)
   DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
   mStoreOpts(0).Name = "Overwrite"
   mStoreOpts(0).Value = True
   mStoreOpts(1).Name = "FilterName"
   mStoreOpts(1).Value = "calc_pdf_Export"
   lungh=Len(sFileName)
   sUrl =  destPath & Left(sFileName,lungh-4) & ".PDF"
   DocUrl = ConvertToURL(sUrl)
   DocName.storeToURL(DocUrl, mStoreOpts())
   DocName.Close(true)
   sFileName = Dir
   Cont=cont+1
   flag=1
Loop
if flag=1 then
	msgbox "Sono stati convertiti " & Cont & " file in PDF",  "File convertiti correttamente"
end if
End Sub

Function ChooseADirectory(Optional sInPath$) As String
Dim oDialog As Object
Dim oSFA As Object
Dim s As String
Dim oPathSettings
oDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
oSFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
If oDialog.Execute() = 1 Then
     ChooseADirectory() = oDialog.getDirectory()
End If
End Function
Windows 7 - Openoffice 4.1.5
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da patel »

Ottimo lavoro :super:
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Darkpunkers
Messaggi: 5
Iscritto il: mercoledì 5 settembre 2018, 21:05

Re: Macro Calc convertire tutti i file in cartella .XLS in .

Messaggio da Darkpunkers »

patel ha scritto:Ottimo lavoro :super:
Grazie Mille.... :D ma mi sa che è merito tuo :lol: :super:
Windows 7 - Openoffice 4.1.5
Rispondi