Macro per salvare file con nome preveniente da celle
Macro per salvare file con nome preveniente da celle
Buongiorno a tutti, sono nuovo e .....
premetto che ho scoperto l'esistenza delle macro stanotte perchè non riuscendo a dormire mi sono messo a cercare soluzioni ad un piccolo problema che vorrei risolvere e, pare, che sia fattibile con l'utilizzo, appunto, delle macro. Utilizzo Libreoffice Versione: 6.4.6.2 (x64) e win10
Passo alla questione:
Ho un foglio di calcolo che utilizzo per fare dei conti e mi piacerebbe, una volta completato il conto, avere un tasto in CALC da premere per fare in modo che il documento venga salvato nel formato originale .ods con nome composito preso da celle all'interno del foglio di calcolo. Oltre a questo (già, non è finita qui) vorrei un altro tasto che mi azzeri determinate celle del documento in modo da ripartire con il conto successivo da zero. Spero di essermi spiegato, in caso Vi chiedo di porre tutte le domande del caso.
Spero in un vostro aiuto, io ahimé non sono un programmatore e non ho nozioni di programmazione di nessun tipo.
Allego il file in modo, spero, di chiarirvi le idee.
Le celle dale quali vorrei formare il nome del file da salvare sono:
K6 (data)
C7 (nome cliente)
C9 (numero di camera)
esemplificando: Nome Mario Rossi, camera 328, Data 2020-09-06
il file risultante dovrebbe in automatico essere: 2020-09-06 Mario Rossi 328.ods
Ringrazio infinitamente a chi potrà aiutarmi. Non chiedo la "pappa scodellata" anche se ovviamente la accetto a braccia aperte. Mi diverto a smanettare quindi posso anche procedere per gradi seguendo le Vs., spero tante, indicazioni.
Grazie mille
Fabrizio
premetto che ho scoperto l'esistenza delle macro stanotte perchè non riuscendo a dormire mi sono messo a cercare soluzioni ad un piccolo problema che vorrei risolvere e, pare, che sia fattibile con l'utilizzo, appunto, delle macro. Utilizzo Libreoffice Versione: 6.4.6.2 (x64) e win10
Passo alla questione:
Ho un foglio di calcolo che utilizzo per fare dei conti e mi piacerebbe, una volta completato il conto, avere un tasto in CALC da premere per fare in modo che il documento venga salvato nel formato originale .ods con nome composito preso da celle all'interno del foglio di calcolo. Oltre a questo (già, non è finita qui) vorrei un altro tasto che mi azzeri determinate celle del documento in modo da ripartire con il conto successivo da zero. Spero di essermi spiegato, in caso Vi chiedo di porre tutte le domande del caso.
Spero in un vostro aiuto, io ahimé non sono un programmatore e non ho nozioni di programmazione di nessun tipo.
Allego il file in modo, spero, di chiarirvi le idee.
Le celle dale quali vorrei formare il nome del file da salvare sono:
K6 (data)
C7 (nome cliente)
C9 (numero di camera)
esemplificando: Nome Mario Rossi, camera 328, Data 2020-09-06
il file risultante dovrebbe in automatico essere: 2020-09-06 Mario Rossi 328.ods
Ringrazio infinitamente a chi potrà aiutarmi. Non chiedo la "pappa scodellata" anche se ovviamente la accetto a braccia aperte. Mi diverto a smanettare quindi posso anche procedere per gradi seguendo le Vs., spero tante, indicazioni.
Grazie mille
Fabrizio
- Allegati
-
- CONTO_prova.ods
- (16.28 KiB) Scaricato 227 volte
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
Ciao e benvenuto/a sul forum.
Se intanto ti vuoi presentare, farai cosa gradita. Puoi farlo in questa sezione -> viewforum.php?f=16
L’utente che apre un quesito si impegna:In caso di inosservanza saremo costretti ad azioni di “richiamo”, sospensione o chiusura del profilo utente.
- a seguirlo dando riscontro quanto prima alle risposte ricevute nel giro di qualche giorno;
- inserire il [Risolto] e la ✔ verde come previsto;- rispettare le altre regole implicite del forum ( Istruzioni per nuovi arrivati - Manuale di sopravvivenza ).
Buon proseguimento.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Macro per salvare file con nome preveniente da celle
prova questa
Codice: Seleziona tutto
Sub Salva_con_nome
Dim args()
Doc = Thiscomponent
Sheet = Doc.Sheets(0)
prefix = "file:///"
Nome = Sheet.getCellRangeByName("C7").string
data = Sheet.getCellRangeByName("K6").string
camera = Sheet.getCellRangeByName("C9").string
Filename = data & Nome & camera & ".ods"
' print Filename
Filename = prefix & Filename
if FileExists(Filename ) then
print "File già esistente"
exit sub
end if
Doc.storeToURL(Filename, args())
' Doc.close(true)
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
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
Re: Macro per salvare file con nome preveniente da celle
Ciao patel
grazie della risposta! Ho provato e temo di non essere in grado di farlo funzionare. Riallego il file con la macro inserita. Al di là che non riesco a farlo funzionare ti chiedo: dove indico la cartella che voglio sia destinataria dei salvataggi? per semplificare ti dico che è c:/conti ... e le barre? ho letto che su libreoffice openoffice ci vogliono quelle inverse ( \ ) o no?
grazie della risposta! Ho provato e temo di non essere in grado di farlo funzionare. Riallego il file con la macro inserita. Al di là che non riesco a farlo funzionare ti chiedo: dove indico la cartella che voglio sia destinataria dei salvataggi? per semplificare ti dico che è c:/conti ... e le barre? ho letto che su libreoffice openoffice ci vogliono quelle inverse ( \ ) o no?
- Allegati
-
- CONTO_prova.ods
- (15.97 KiB) Scaricato 183 volte
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
cercando e smanettando ho trovato questo:
(che è sempre opera di patel) e sono riuscito ad adattarlo e farlo funzionare.
Quindi innanzitutto ringrazio perchè ho fatto un passo avanti importantissimo.
Ora ... gli aggiustamenti "fini":
1
vorrei mettere uno spazio o un underscore tra i "componenti" che compongono il nome del file
2020-09-09rossi mario328 (come attualmente viene salvato il file)
vorrei fosse
2020-09-09_rossi mario_328
o
2020-09-09 rossi mario 328
2
dopo che la macro ha eseguito il salvataggio con nome vorrei che lanciasse in automatico la stampa
3
dopo che la macro ha eseguito il salvataggio con nome e ha lanciato la stampa vorrei che alcune celle (a mia scelta) vengano riportate ai valori di partenza
4
dopo tutto sto trambusto, in fine, vorrei mettere un tasto sul foglio excel da premere per far partire la macro
ok, adesso insultatemi pure
p.s.: allego il file con macro funzionante
Codice: Seleziona tutto
Sub Salva_con_nome
Dim Nome As String, Filename As String, Doc As Object, Sheet As Object, args()
Doc = Thiscomponent
Sheet = Doc.Sheets(0)
Nome = "file:///C:/Conti/"
K6 = Sheet.getCellRangeByName("K6").string
C7 = Sheet.getCellRangeByName("C7").string
C9 = Sheet.getCellRangeByName("C9").string
Filename = Nome & K6 & C7 & C9 & ".ods"
' print Filename
Doc.storeToURL(Filename, args())
End Sub
Quindi innanzitutto ringrazio perchè ho fatto un passo avanti importantissimo.
Ora ... gli aggiustamenti "fini":
1
vorrei mettere uno spazio o un underscore tra i "componenti" che compongono il nome del file
2020-09-09rossi mario328 (come attualmente viene salvato il file)
vorrei fosse
2020-09-09_rossi mario_328
o
2020-09-09 rossi mario 328
2
dopo che la macro ha eseguito il salvataggio con nome vorrei che lanciasse in automatico la stampa
3
dopo che la macro ha eseguito il salvataggio con nome e ha lanciato la stampa vorrei che alcune celle (a mia scelta) vengano riportate ai valori di partenza
4
dopo tutto sto trambusto, in fine, vorrei mettere un tasto sul foglio excel da premere per far partire la macro
ok, adesso insultatemi pure
p.s.: allego il file con macro funzionante
- Allegati
-
- CONTO_prova.ods
- (17.57 KiB) Scaricato 205 volte
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
almeno per la prima domanda potresti risolvere da solo documentandoti un poco
-------------------
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
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
Re: Macro per salvare file con nome preveniente da celle
Hai ragionissima. In effetti mi ero messo a studiare. Non gli spazi vuoti ma sull'inserire un pulsante per fare partire la macro e sui codici per lanciare la stampa. Sono riuscito a fare il pulsante che avvia la macro. Sulla stampa mi sono arenato. Ho provato con il "registra attività" ma non funziona. Più tardi, in nottata posterò dando info più dettagliate. Gli spazi se ho capito bene dovrebbero essere " " ... Giusto? Dopo appena finisco di lavorare ci provo. Intanto grazie per il supporto
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
Gli spazi sono " ", ma meglio evitarli sui nomi, meglio usare "_"
-------------------
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
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
Re: Macro per salvare file con nome preveniente da celle
Thx. Tra poco mi metto al lavoro
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
... e niente, sulla stampa non trovo niente che funzioni (o meglio, che funzioni per me)
Risolto il problema degli spazi inserendo underscore e pulsante realizzato e funzionante.
rimane da risolvere la stampa e la cancellazione di valori da celle predefinite
comunque è già un risultato notevole per me
se avete qualche suggerimento per la stampa non esitate, adesso mi metto alla ricerca di un codice funzionante
Risolto il problema degli spazi inserendo underscore e pulsante realizzato e funzionante.
rimane da risolvere la stampa e la cancellazione di valori da celle predefinite
comunque è già un risultato notevole per me
se avete qualche suggerimento per la stampa non esitate, adesso mi metto alla ricerca di un codice funzionante
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
Codice: Seleziona tutto
Sub Salva_con_nome
Dim Nome As String, Filename As String, Doc As Object, Sheet As Object, args()
Doc = Thiscomponent
Sheet = Doc.Sheets(0)
Nome = "file:///>>>>PERCORSO<<<</"
K6 = Sheet.getCellRangeByName("K6").string
C7 = Sheet.getCellRangeByName("C7").string
C9 = Sheet.getCellRangeByName("C9").string
Filename = Nome & K6 & "_" & C7 & "_" & C9 & ".ods"
' print Filename
Doc.storeToURL(Filename, args())
End Sub
Sub Stampa_Foglio()
ActiveSheet.PrintOut
End Sub
eppure il codice sembra semplice e leggo che funziona a molti
a me da l'errore come da immagine "errore di runtime basic. variabile dell'oggetto non impostata (indicando la riga ActiveSheet.PrintOut)
Ultima modifica di faber_x il mercoledì 9 settembre 2020, 10:06, modificato 1 volta in totale.
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
ActiveSheet non significa niente in starbasic, come hai già visto devi scrivere
Codice: Seleziona tutto
Sub Stampa_Foglio()
Doc = Thiscomponent
Sheet = Doc.Sheets(0)
Sheet.PrintOut
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
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
Re: Macro per salvare file con nome preveniente da celle
Ho visto sì, che non funzionava! Ignoro totalmente la programmazione quindi posso solo constatare se una cosa funziona o no. Ed in effetti activesheet non funzionava. Oggi provo il tuo suggerimento (e non dubito che funzionerà).
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
ok, al di là di tutto faccio il punto della situazione e pongo domande tecniche-
Al momento la situazione è discreta ma non idilliaca. Ho trovato questo codice:
che potrebbe anche andarmi bene però mi apre la finestra di dialogo stampa mentre vorrei stampare direttamente.
I salvataggi funzionano bene, ho riprovato anche il primo codice inviato da patel e, come era ipotizzabile, funziona alla grande, ero io che da niubbo erravo alcune cose.
Al momento la situazione è discreta ma non idilliaca. Ho trovato questo codice:
Codice: Seleziona tutto
Sub PrintDoc
Dim Document As object
Dim Dispatcher As Object
Document = ThisComponent.CurrentController.Frame
Dispatcher = createUNOService("com.sun.star.frame.DispatchHelper")
Dispatcher.executeDispatch(Document,".uno:Print", "", 0, Array())
End sub
I salvataggi funzionano bene, ho riprovato anche il primo codice inviato da patel e, come era ipotizzabile, funziona alla grande, ero io che da niubbo erravo alcune cose.
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
ci sono riuscito, funziona tutto. dopo riprovo per bene e magari posto il codice (che per voi sarà una cosa ridicola) che magari a qualche scarsone come me potrebbe fare comodo. grazie
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
Che soddisfazione riuscire a fare da solo !
In effetti il codice che avevi trovato prima per la stampa era per excel.
In effetti il codice che avevi trovato prima per la stampa era per excel.
-------------------
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
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
Re: Macro per salvare file con nome preveniente da celle
Si grande soddisfazione lo ammetto. PArtendo da zero è un risultato apprezzabile.
Ho dovuto fare due macro ed associarle a due pulsanti separati perche se mettevo tutte le "funzioni" dentro ad un unica macro il salvataggio avveniva a conto già azzerato. Ho pèrovato anche a invertire la sequenza mettendo il salvataggio come prima "funzione" seguita dalla stampa e in ultimo l'azzeramento ma ancora ottenevo file salvati già azzerati. Quindi due pulsanti e via.
Ringrazio patel per il supporto FONDAMENTALE
Questa la macro che salva il file con nome creando il nome da tre celle
e questa quella che azzzera le celle e salva il doc originale (azzerato) una volta azzerate le celle. Questa l'ho creata con il mitico "registra macro"
Ho dovuto fare due macro ed associarle a due pulsanti separati perche se mettevo tutte le "funzioni" dentro ad un unica macro il salvataggio avveniva a conto già azzerato. Ho pèrovato anche a invertire la sequenza mettendo il salvataggio come prima "funzione" seguita dalla stampa e in ultimo l'azzeramento ma ancora ottenevo file salvati già azzerati. Quindi due pulsanti e via.
Ringrazio patel per il supporto FONDAMENTALE
Questa la macro che salva il file con nome creando il nome da tre celle
Codice: Seleziona tutto
Sub salva_stampa()
Dim Nome As String, Filename As String, Doc As Object, Sheet As Object, args()
Doc = Thiscomponent
Sheet = Doc.Sheets(0)
Nome = "file:///C:/>>>>PERCORSO<<<</"
K6 = Sheet.getCellRangeByName("K6").string
C7 = Sheet.getCellRangeByName("C7").string
C9 = Sheet.getCellRangeByName("C9").string
Filename = Nome & K6 & "_" & C7 & "_" & C9 & ".ods"
' print Filename
Doc.storeToURL(Filename, args())
Document = ThisComponent.CurrentController.Frame
Dispatcher = createUNOService("com.sun.star.frame.DispatchHelper")
Dispatcher.executeDispatch(Document,".uno:Print", "", 0, Array())
End Sub
Codice: Seleziona tutto
Sub azzera_celle
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$C$7"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$C$9"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$F$9"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$H$9"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$B$12:$D$17"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args11(0) as new com.sun.star.beans.PropertyValue
args11(0).Name = "ToPoint"
args11(0).Value = "$F$12:$G$17"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args11())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "ToPoint"
args13(0).Value = "$B$21:$D$22"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args15(0) as new com.sun.star.beans.PropertyValue
args15(0).Name = "ToPoint"
args15(0).Value = "$F$21:$G$22"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = "ToPoint"
args17(0).Value = "$B$31:$D$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args17())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args19(0) as new com.sun.star.beans.PropertyValue
args19(0).Name = "ToPoint"
args19(0).Value = "$F$31:$G$37"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args19())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args21(0) as new com.sun.star.beans.PropertyValue
args21(0).Name = "ToPoint"
args21(0).Value = "$B$26:$D$27"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args21())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args23(0) as new com.sun.star.beans.PropertyValue
args23(0).Name = "ToPoint"
args23(0).Value = "$F$26:$G$27"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args25(0) as new com.sun.star.beans.PropertyValue
args25(0).Name = "ToPoint"
args25(0).Value = "$J$41"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args25())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args27(0) as new com.sun.star.beans.PropertyValue
args27(0).Name = "ToPoint"
args27(0).Value = "$E$45"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args27())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args29(0) as new com.sun.star.beans.PropertyValue
args29(0).Name = "ToPoint"
args29(0).Value = "$G$45"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args29())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args31(0) as new com.sun.star.beans.PropertyValue
args31(0).Name = "ToPoint"
args31(0).Value = "$E$45"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args31())
rem ----------------------------------------------------------------------
dim args32(0) as new com.sun.star.beans.PropertyValue
args32(0).Name = "StringName"
args32(0).Value = "0"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args32())
rem ----------------------------------------------------------------------
dim args33(0) as new com.sun.star.beans.PropertyValue
args33(0).Name = "ToPoint"
args33(0).Value = "$G$45"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args33())
rem ----------------------------------------------------------------------
dim args34(0) as new com.sun.star.beans.PropertyValue
args34(0).Name = "StringName"
args34(0).Value = "0"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args34())
rem ----------------------------------------------------------------------
dim args35(0) as new com.sun.star.beans.PropertyValue
args35(0).Name = "ToPoint"
args35(0).Value = "$F$46"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args35())
rem ----------------------------------------------------------------------
rem define variables
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
End Sub
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
L'unica cosa è che vorrei la stampa partisse subito anziché passare dalla finestra di stampa e dover premere "stampa" per stampare
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
Ti posto il link della pagina web con diversi comandi .uno (tipo ".uno:Print" , usato nel tuo codice) per LibreOffice : https://wiki.documentfoundation.org/Dev ... chCommands
Eseguendo una ricerca nella pagina con "Print" sicuramente troverai il comando che serve per stampare direttamente con la stampante di default.
Trovato il comando, lo dovrai inserire nella riga
Dispatcher.executeDispatch(Document,".uno:Print", "", 0, Array())
al posto di ".uno:Print"
Buon lavoro.
Saluti
Geo
Eseguendo una ricerca nella pagina con "Print" sicuramente troverai il comando che serve per stampare direttamente con la stampante di default.
Trovato il comando, lo dovrai inserire nella riga
Dispatcher.executeDispatch(Document,".uno:Print", "", 0, Array())
al posto di ".uno:Print"
Buon lavoro.
Saluti
Geo
LibO 7 su LinuxMint 21
Re: Macro per salvare file con nome preveniente da celle
Grazie mille, appena posso provo i vari codici!
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
.uno:PrintDefault
eccolo!!!! grazie mille
mi si è aperto un mondo con 'ste macro. molto divertente!
eccolo!!!! grazie mille
mi si è aperto un mondo con 'ste macro. molto divertente!
libreoffice Versione: 6.4.6.2 (x64) su windows 10
Re: Macro per salvare file con nome preveniente da celle
Scusate, perchè a me restituisce quest'errore?
macOS 14 Sonoma: LibreOffice 24.2.1
Re: Macro per salvare file con nome preveniente da celle
e mi evidenzia questo
Codice: Seleziona tutto
ThisComponent.storeToURL(fname, mStoreOpts())
macOS 14 Sonoma: LibreOffice 24.2.1
Re: Macro per salvare file con nome preveniente da celle
Come risponderti senza vedere tutto il codice che hai scritto ? anche se l'hai copiato potresti avere fatto qualche errore.
-------------------
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
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
Re: Macro per salvare file con nome preveniente da celle
Hai ragione, ma avendolo copiato pensavo bastasse, allego il file con le modifiche
Grazie
Grazie
- Allegati
-
- Salva con nome da celle.ods
- (9.43 KiB) Scaricato 91 volte
macOS 14 Sonoma: LibreOffice 24.2.1
Re: Macro per salvare file con nome preveniente da celle
.
Molto probabilmente hai sbagliato l'impostazione del percorso di salvataggio.
Così forse ti è più chiaro e funziona ma non ho modo di testarlo su windows.
Adegua la riga che inizia con "PercorsoDiSalvataggio" al tuo sistema operativo, ...
Molto probabilmente hai sbagliato l'impostazione del percorso di salvataggio.
Così forse ti è più chiaro e funziona ma non ho modo di testarlo su windows.
Adegua la riga che inizia con "PercorsoDiSalvataggio" al tuo sistema operativo, ...
Codice: Seleziona tutto
Sub SalvaConNomeCelle
Dim PercorsoDiSalvataggio As String, NomeDelFile As String, Documento As Object, Foglio As Object, args()
Documento = Thiscomponent
Foglio = Documento.Sheets(0) ' il primo foglio
PercorsoDiSalvataggio = "file:///home/NomeUtente/Scrivania/" 'percorso Linux
'PercorsoDiSalvataggio = "file:///C:/NomeDelPercorso/" 'percorso windows (sempre barre rovescie)
A1 = Foglio.getCellRangeByName("A1").string
B1 = Foglio.getCellRangeByName("B1").string
C1 = Foglio.getCellRangeByName("C1").string
NomeDelFile = PercorsoDiSalvataggio & A1 & "_" & B1 & "_" & C1 & ".ods"
Rem Test di verifica ( del Percorso e nome file completo)
print NomeDelFile 'visualizza a schermo il percorso completo (commentare poi con apostrofo o Rem)
STOP 'Blocca l'esecuzione (commentare poi con apostrofo o Rem)
Documento.storeToURL(NomeDelFile, args())
End Sub
- Allegati
-
- Salva con nome da celle 01.ods
- (10.25 KiB) Scaricato 103 volte
Re: Macro per salvare file con nome preveniente da celle
grazie, adesso non mi restituisce più l'errore di prima, ma comunque non funziona.
Uso un Mac ed il percorso è quello che uso anche per altre macro
mi compare questo Avviso e se clicco su OK non salva nulla
Non capisco
Uso un Mac ed il percorso è quello che uso anche per altre macro
Codice: Seleziona tutto
/Users/Max/Documents/Test/
Non capisco
macOS 14 Sonoma: LibreOffice 24.2.1
Re: Macro per salvare file con nome preveniente da celle
Se leggevi le poche righe di codice erano ben commentate.lucky63 ha scritto: ...
La finestrella ti appare perchè:
Codice: Seleziona tutto
Rem Test di verifica ( del Percorso e nome file completo)
print NomeDelFile 'visualizza a schermo il percorso completo (commentare poi con apostrofo o Rem)
Come è indicato per evitare che appaia è sufficiente far iniziare la riga con un apostrofo o un REM (per trasformarla in un commento e quindi non operativa).
Similmente per la riga successiva che blocca l'esecuzione della macro
Codice: Seleziona tutto
STOP 'Blocca l'esecuzione (commentare poi con apostrofo o Rem)
Codice: Seleziona tutto
"file:///Users/Max/Documents/Test/"
Codice: Seleziona tutto
Sub SalvaConNomeCelle
Dim PercorsoDiSalvataggio As String, NomeDelFile As String, Documento As Object, Foglio As Object, args()
Documento = Thiscomponent
Foglio = Documento.Sheets(0) ' il primo foglio
'PercorsoDiSalvataggio = "file:///home/NomeUtente/Scrivania/" ' Esempio di percorso su Linux
'PercorsoDiSalvataggio = "file:///C:/NomeDelPercorso/" 'Esempio di percorso su windows (sempre barre rovescie)
PercorsoDiSalvataggio = "file:///Users/Max/Documents/Test/" ' Esempio di percorso su Mac (sempre barre rovescie)
A1 = Foglio.getCellRangeByName("A1").string
B1 = Foglio.getCellRangeByName("B1").string
C1 = Foglio.getCellRangeByName("C1").string
NomeDelFile = PercorsoDiSalvataggio & A1 & "_" & B1 & "_" & C1 & ".ods"
Documento.storeToURL(NomeDelFile, args())
End Sub
Re: Macro per salvare file con nome preveniente da celle
Scusate, lucky63 hai perfettamente ragione, nel cercare di capire il codice non ho dato peso ai commenti, per quanto riguarda il percorso non ho capito perchè non funzionava 8l'ho copiato ed incollato ed adesso funziona).
Adesso mi vergogno un po' a formulare una nuova domanda, ma per completare l'opera (della macro o per stabilire definitavemte che sono "tugno"), con questa macro si salva una copia del file con nome, lasciando aperto il file, se nuovo, "Senza Titolo 1".
Per salvare il file e lasciare aperto il file salvato?
Adesso mi vergogno un po' a formulare una nuova domanda, ma per completare l'opera (della macro o per stabilire definitavemte che sono "tugno"), con questa macro si salva una copia del file con nome, lasciando aperto il file, se nuovo, "Senza Titolo 1".
Per salvare il file e lasciare aperto il file salvato?
macOS 14 Sonoma: LibreOffice 24.2.1