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::::
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::::
.
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”
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