[Risolto] Macro per Salvare solo un foglio in un percorso

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

[Risolto] Macro per Salvare solo un foglio in un percorso

Messaggio da Biagio91 »

Buongiorno,
Sto cercando il modo di scrivere una macro che in un documento che contiene svariati fogli, possa salvare con nome solamente il FoglioAttivo in un percorso predefinito.
 Editato: Quindi il risultato deve ussere un NuovoFile contenente solo il foglio desiderato 
Ho provato a fare tasto dx sul foglio > copia/sposta del foglio > su un altro documento ; mi andava bene ma poi mi sono reso conto che non riesco a salvare il NuovoFile dalla macro del FileOriginale, e il tutto mi sembra che diventi un po' troppo complicato, e quindi ho pensato di domandarvi aiuto, perché probabilmente esiste una strada alternativa migliore che potete suggerirmi?

Grazie mille
Ciao
Ultima modifica di Biagio91 il mercoledì 16 giugno 2021, 11:03, modificato 3 volte in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro per Salvare solo un foglio in un percorso

Messaggio da patel »

Una alternativa potrebbe essere rimuovere i fogli che non ti interessano e salvare con nome
-------------------
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
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Macro per Salvare solo un foglio in un percorso

Messaggio da Biagio91 »

Ciao, grazie mille, ottimo consiglio, ma purtroppo gli altri fogli mi serve che rimangano nel FileOriginale; stavo pensando di tradurlo in "fare una copia del file > eliminare tutti gli altri fogli > quindi salvare il NuovoFile che contiene solo il Foglio desiderato; ma in ogni caso mi sembra che dovrei far partire la macro dal FileOriginale per farla lavorare sul NuovoFile, e non sono in grado di fare ciò.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Macro per Salvare solo un foglio in un percorso

Messaggio da lucky63 »

.
Una possibile soluzione.
("PercorsoSalvataggio" va adeguato in base al proprio sistema operativo e esigenze).
Nel file di esempio la macro è collegata a: Menu > File > Salva solo il “Foglio Attivo”

Codice: Seleziona tutto

Sub SalvaFoglioAttivoConNomeFoglioAttivo_Con_Data_e_Orario_Salvataggio
Rem ----- Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=26&t=11271
Rem ----- Adeguare il "PercorsoSalvataggio" in base al proprio sistema operativo e esigenze.
Rem ----- Nel file di esempio la macro è collegata a: Menu > File > Salva solo il “Foglio Attivo”
Dim Dummy()
Doc = ThisComponent
FoglioAttivo = Doc.GetCurrentController.ActiveSheet

Rem ----- Creo un nuovo file vuoto con un solo foglio
NuovoFile = StarDesktop.loadComponentFromURL("private:factory/scalc" ,"_blank", 0, Dummy() )

Rem ----- Imposto i parametri di salvataggio del nuovo file
PercorsoSalvataggio = ConvertToUrl("file:///home/NomeUtente/Scrivania/") 'DA CAMBIARE Esempio percorso Linux
'PercorsoSalvataggio = ConvertToUrl("file:///C:/Percorso/")        'DA CAMBIARE Esempio percorso Windows
DataOraSaltavaggio = Format(Now(), "dd-mm-yyyy hh:mm:ss") 'Parametri completi x standard inglese "yy-mm-dd-hh-mm-ss"
NomeDelFile = FoglioAttivo.Name & "  " & DataOraSaltavaggio

Rem ----- Salvo il nuovo file ancora vuoto
NuovoFile.StoreAsUrl(PercorsoSalvataggio & NomeDelFile & ".ods", Dummy() )

Rem ----- Copio il FoglioAttivo nel nuovo file
Dim COPIA(2) As New com.sun.star.beans.PropertyValue
FRAME = Doc.CurrentController.Frame
ESEGUI = CreateUnoService("com.sun.star.frame.DispatchHelper")

COPIA(0).Name = "DocName"
COPIA(0).Value = NomeDelFile
COPIA(1).Name = "Index"
COPIA(1).Value = 1
COPIA(2).Name = "Copy"
COPIA(2).Value = True
ESEGUI.executeDispatch(FRAME, ".uno:Move", "", 0, COPIA())

Rem ----- Elimino il foglio vuoto originario
NuovoFile.Sheets.RemoveByName("Foglio1")

Rem ----- Salvo il nuovo file e lo chiudo
NuovoFile.Store(True)
NuovoFile.Close(True)

Rem ----- Avviso finale di salvataggio avvenuto con successo indicante il NomeFile e il PercorsoSalvataggio
MsgBox("Foglio attivo salvato con il nome:  " & Chr$(10) & _
        NomeDelFile & Chr$(10) & Chr$(10) & _
        "Nel percorso/cartella:  " & Chr$(10) & _
        PercorsoSalvataggio , 0 , "INFORMAZIONE UTILE")

End sub

Allegati
Test - SalvaFoglioAttivoConNomeFoglioAttivo_Con_Data_e_Orario_Salvataggio.ods
(16.45 KiB) Scaricato 140 volte
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Macro per Salvare solo un foglio in un percorso

Messaggio da Biagio91 »

Ciao lucky63,

Funziona egregiamente.

Devo finire di leggermi alcune cose per capire bene come è stato fatto il tutto in quanto è la prima volta che utilizzo un codice di questo tipo.

Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Rispondi