[Risolto] Macro per salvare una copia

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
Marilù
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 14:15

[Risolto] Macro per salvare una copia

Messaggio da Marilù »

Buongiorno a tutti,
ho provato a registrare una macro per salvare una copia un file di Calc (sempre lo stesso) in un altra cartella.
Ma l'unica cosa che sono riuscita ad ottenere è che mi si apre la finestra di salva una copia, poi devo digitare tutto a mano.
Come faccio a inserire il percorso?

Il mio sistema operativo è Ubuntu.

Grazie
Ultima modifica di charlie il mercoledì 30 settembre 2020, 22:20, modificato 4 volte in totale.
Motivazione: Aggiunta ✔ verde.
Avatar utente
Marilù
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 14:15

Re: Macro per salvare con nome

Messaggio da Marilù »

Avevo messo risolto ma avevo fatto confusione fra "Salva con NOME" e "Salva UNA COPIA",

a me serve che la macro con il comando Salva una copia perché il documento attivo deve rimanere quello della cartella originaria.
geovign
Messaggi: 217
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Macro per salvare una copia

Messaggio da geovign »

Ciao Marilù,
prova questa

Codice: Seleziona tutto

Sub Main2
Dim Doc As Object
Dim SceltaCartella As String
Dim NomeFileOriginario As String 
Dim PercorsoCompleto As string
Doc = ThisComponent
SceltaCartella = getPath()
NomeFileOriginario = Doc.Title	'nome documento aperto completo di estensione
rem percorso completo del nuovo file
PercorsoCompleto = ConvertToUrl(SceltaCartella & NomeFileOriginario)
rem definisco le proprietà del nuoovo file (salvo in formato ods
dim Proprieta(0) as new com.sun.star.beans.PropertyValue
Proprieta(0).Name = "FilterName"
Proprieta(0).Value = "calc8"
rem salvo una copia del documento (Save As...)
Doc.storeToUrl(PercorsoCompleto,Proprieta())
End Sub

Function GetPath() As String
	Dim oPathSettings, oFolderDialog
	Dim sPath As String
	oPathSettings = CreateUnoService("com.sun.star.util.PathSettings")
	sPath = oPathSettings.Work
	oFolderDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
	oFolderDialog.SetDisplayDirectory(sInPath)
	If oFolderDialog.Execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
		sPath = oFolderDialog.GetDirectory
	Else
		GetPath = ""
		Exit Function
	End If
	If Right(sPath, 1) <> "/" Then sPath = sPath & "/"
	GetPath = sPath
End Function 
Salva una copia del documento originario in altra cartella, ma con lo stesso nome.
Saluti
Geo
LibO 7 su LinuxMint 21
Avatar utente
Marilù
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 14:15

Re: Macro per salvare una copia

Messaggio da Marilù »

scusa se ti ho disturbato ma ci rinuncio, troppo difficile per me :crazy:

Non riesco a capire come modificarla indicando i percorsi
geovign
Messaggi: 217
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Macro per salvare una copia

Messaggio da geovign »

Ciao Marilù,
non ho spiegato come funziona la macro proposta....
Lancia la macro "Main2". Si apre una finestra di dialogo per la selezione del percorso; fatta la scelta, il codice salva una copia del file originario, nella posizione scelta e con lo stesso nome del file originario.
Se invece ti interessa qualcosa di più semplice...

Codice: Seleziona tutto

Sub Main3
Dim Doc As Object
Dim NomeFileOriginario As String
Dim PosizioneSalvataggio As string
Dim PercorsoCompleto As string
Doc = ThisComponent
NomeFileOriginario = Doc.Title   'nome documento aperto completo di estensione
rem definizione della posizione
PosizioneSalvataggio = "/home/pippo/Desktop/"   '<<< DA MODIFICARE CON IL PERCORSO SCELTO SEMPRE TRA DOPPI APICI
rem percorso completo del nuovo file
PercorsoCompleto = ConvertToUrl(PosizioneSalvataggio & NomeFileOriginario)
rem definisco le proprietà del nuoovo file (salvo in formato ods
dim Proprieta(0) as new com.sun.star.beans.PropertyValue
Proprieta(0).Name = "FilterName"
Proprieta(0).Value = "calc8"
rem salvo una copia del documento (Save As...)
Doc.storeToUrl(PercorsoCompleto,Proprieta())
End Sub
In entrambe le soluzioni:
- viene sovrascritto il file copia esistente se il percorso per il salvataggio è sempre lo stesso, senza darne avviso.
- il file attivo è sempre quello originario
Allego file di esempio con pulsanti per lanciare le macro.
Saluti
Geo
Allegati
Prova_Salva_una_copia.ods
(10.29 KiB) Scaricato 191 volte
LibO 7 su LinuxMint 21
Avatar utente
Marilù
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 14:15

Re: Macro per salvare una copia

Messaggio da Marilù »

:bravo: :super: :bravo:

Grazie, la seconda è proprio quello che cercavo!

Oltretutto mettendola fra le macro del documento invece che fra quelle personali, si può applicare anche ad altri file di Calc da salvare in cartelle differenti!

Basta mettere un pulsantino ed è fatta :bravo:
geovign
Messaggi: 217
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: [Risolto] Macro per salvare una copia

Messaggio da geovign »

Bene.
Grazie del riscontro.
Geo
LibO 7 su LinuxMint 21
Rispondi