macro per esportare file col nome corrente

Creare una macro - Scrivere uno script - Usare le API
Rispondi
alpaca
Messaggi: 3
Iscritto il: venerdì 25 marzo 2016, 2:36

macro per esportare file col nome corrente

Messaggio da alpaca »

salve, premetto che non ho nessuna conoscenza di linguaggio di programmazione... quindi magari la mia domanda sarà banale... ma io proprio non ci riesco...
allora ho creato (tramite registrazione) una macro che prima mi modifica un file e successivamente lo esporta in pdf.... il problema è che qualsiasi file io applico questa macro.. esso viene esportato in pdf sempre col nome del file su cui ho eseguito la registrazione... mentre io vorrei che il nome del file esportato sia collegato al nome del file aperto...
in altre parole attualmente... qualsiasi file a cui applico questa macro... viene esportato in pdf sempre col nome bn.pdf (che è il nome usato quando ho registrato la macro) , mentre io vorrei che se applico la macro ad esempio ad un file che si chiama ciao.pdf essa venga esportato con un nome tipo ciao1.pdf oppure ciaomodificato.pdf... (andrebbe bene pure se viene usato lo stesso nome.. quindi ciao.pdf... però ho paura che essendo aperto un file con lo stesso nome... ci siano problemi di scrittura)
è possibile ?
openoffice 3.1 su windows vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per esportare file col nome corrente

Messaggio da patel »

che ne dici di farci vedere la macro ?
comunque puoi ricavare il nome del file con

Codice: Seleziona tutto

Sub DocumentName
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
sDocURL = ThisComponent.getURL()
fname =  FileNameoutofPath(sDocURL, "/")
fname = left(fname,len(fname) - 4
Print "Document File Name = " & Fname
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
alpaca
Messaggi: 3
Iscritto il: venerdì 25 marzo 2016, 2:36

Re: macro per esportare file col nome corrente

Messaggio da alpaca »

patel ha scritto:che ne dici di farci vedere la macro ?
si.. scusami...

questa è la parte della macro che esporta il file:

Codice: Seleziona tutto

dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "URL"
args2(0).Value = "file:///C:/Users/Win8/Desktop/prove/bn.pdf"
args2(1).Name = "FilterName"
args2(1).Value = "writer_pdf_Export"
args2(2).Name = "FilterData"
args2(2).Value = Array()

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
ps. ho tolto la parte di codice dentro array perchè era lunghisima.. e penso che non è importante... se serve la aggiungo....
openoffice 3.1 su windows vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per esportare file col nome corrente

Messaggio da patel »

Codice: Seleziona tutto

If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
sDocURL = ThisComponent.getURL()
fname =  FileNameoutofPath(sDocURL, "/")
fname = left(fname,len(fname) - 4
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "URL"
args2(0).Value = "file:///C:/Users/Win8/Desktop/prove/" & fname & ".pdf"
args2(1).Name = "FilterName"
args2(1).Value = "writer_pdf_Export"
args2(2).Name = "FilterData"
args2(2).Value = Array()
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
Ultima modifica di patel il domenica 27 marzo 2016, 9:06, modificato 1 volta in totale.
-------------------
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
alpaca
Messaggi: 3
Iscritto il: venerdì 25 marzo 2016, 2:36

Re: macro per esportare file col nome corrente

Messaggio da alpaca »

la prima volta che ho eseguito la macro mi ha dato errore su questa riga:

args2(0).Value = "file:///C:/Users/Win8/Desktop/prove/" & fname" & ".pdf"

penso che l'errore sia dipeso che hai dimenticato le " prima di fname... quindi l'ho corretto nel seguente modo:

args2(0).Value = "file:///C:/Users/Win8/Desktop/prove/" & "fname" & ".pdf"

quindi ho eseguito la macro.. e in riferimento all'ultima riga del codice mi ha dato il seguente errore:

variabile dell'oggetto non impostata

ps. ho eseguito la macro su libreoffice e non su openoffice.. ma penso che sia la stessa cosa....
openoffice 3.1 su windows vista
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: macro per esportare file col nome corrente

Messaggio da Gaetanopr »

Codice: Seleziona tutto

args2(0).Value = "file:///C:/Users/Win8/Desktop/prove/" & fname & ".pdf"
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per esportare file col nome corrente

Messaggio da patel »

giusto, ho corretto, c'era una " in più
-------------------
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
Rispondi