Pannello di Controllo Moderatore ]

[Risolto] Macro per salvare una copia

Creare una macro - Scrivere uno script - Usare le API

[Risolto] Macro per salvare una copia

Messaggioda Marilù » martedì 29 settembre 2020, 12:05

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, 15:15

Re: Macro per salvare con nome

Messaggioda Marilù » martedì 29 settembre 2020, 12:55

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.
Avatar utente
Marilù
 
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 15:15

Re: Macro per salvare una copia

Messaggioda geovign » martedì 29 settembre 2020, 14:45

Ciao Marilù,
prova questa
Codice: Seleziona tutto   Espandi visualeStringi visuale
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 6 su MX Linux
geovign
 
Messaggi: 146
Iscritto il: domenica 13 gennaio 2019, 12:19
Località: Modena

Re: Macro per salvare una copia

Messaggioda Marilù » mercoledì 30 settembre 2020, 13:02

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

Non riesco a capire come modificarla indicando i percorsi
Avatar utente
Marilù
 
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 15:15

Re: Macro per salvare una copia

Messaggioda geovign » mercoledì 30 settembre 2020, 15:58

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   Espandi visualeStringi visuale
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 8 volte
LibO 6 su MX Linux
geovign
 
Messaggi: 146
Iscritto il: domenica 13 gennaio 2019, 12:19
Località: Modena

Re: Macro per salvare una copia

Messaggioda Marilù » mercoledì 30 settembre 2020, 18:18

: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:
Avatar utente
Marilù
 
Messaggi: 18
Iscritto il: sabato 21 dicembre 2013, 15:15

Re: [Risolto] Macro per salvare una copia

Messaggioda geovign » mercoledì 30 settembre 2020, 23:35

Bene.
Grazie del riscontro.
Geo
LibO 6 su MX Linux
geovign
 
Messaggi: 146
Iscritto il: domenica 13 gennaio 2019, 12:19
Località: Modena


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti