[Risolto]Salva e chiudi file 2 lanciando macro dal file 1

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

[Risolto]Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Salve a tutti, ho due file aperti che per semplicità chiamo "file madre" e "file figlia". Sul file madre ho una serie di pulsanti che azionano varie macro. Vorrei creare un ulteriore pulsante (non ho problemi) che (ribadisco dal "file madre") dia le seguenti istruzioni:
1. Salva con nome ........xls il "file figlia" e chiudilo;
2. Torna sulla cella a1, del foglio 1 del "file madre".

Mi sembrava semplice, ma a causa della mia scarsa conoscenza quando scrivo l'istruzione salva con nome, chiudi.... mi punta sul file madre e non su quello figlia.... perdonate la richiesta che credo sia semplice, ma non trovo la giusta istruzione...
Anticipatamente ringrazio e saluto.
Ultima modifica di GianniRm1968 il sabato 22 gennaio 2022, 7:44, modificato 2 volte in totale.
OpenOffice 4.1.9 su Windows 10 home
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da patel »

mostra il codice che hai scritto
-------------------
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
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Codice: Seleziona tutto

Sub Tabacchi1
dim document   as object
Dim DocName as object, DocUlr as string, dummy(), range as object
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Range = Sheet.getCellRangeByName("A2:b291").getDataArray ' range da copiare
sFileName ="file:///c:/users/bluei/onedrive/Desktop/Ordineopen.ods"  ' file destinazione
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
Sheet1 = DocName.Sheets(0)
dRange  = Sheet1.getCellRangeByName("A2:b291") ' range destinazione
dRange.setDataArray(Range)
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim filename as string,args()
dim args57(1) as new com.sun.star.beans.PropertyValue
args57(0).Name = "URL"
args57(0).Value = "file:///C:/Users/bluei/onedrive/Desktop/Ordineexcel.xls"
args57(1).Name = "FilterName"
args57(1).Value = "MS Excel 97"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args57())

End Sub
Ultima modifica di charlie il venerdì 9 luglio 2021, 14:18, modificato 1 volta in totale.
Motivazione: formattato codice
OpenOffice 4.1.9 su Windows 10 home
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da patel »

Non ho capito bene, puoi allegare i due file ?
-------------------
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
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Buongiorno e grazie per l'attenzione intanto. Forse mi sono spiegato male, anzi ne sono certo. Io lancio una macro dal file "Gestionale.ods" che mi fa (correttamente) le istruzioni di:
1) copiare un certo range da un certo foglio;
2) apre il file "ordiniopen.ods" e ci incolla il range copiato;

Qui nasce il problema, in quanto vorrei salvare "ordiniopen.ods", cambiando il formato in xls ma non lo fa sul file "ordiniopen" ma sul file "gestionale.ods"... non riesco come fare a dirgli che il file da salvare con estensione xls deve essere "ordiniopen" e non "gestionale.ods!!"
3) incolla il range copiato;
OpenOffice 4.1.9 su Windows 10 home
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da patel »

prova così modificando i percorsi

Codice: Seleziona tutto

Sub salvaxls
dim document   as object
Dim DocName as object, DocUlr as string, dummy(), range as object
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Range = Sheet.getCellRangeByName("A1:b3").getDataArray ' range da copiare
sFileName ="file:///F:/download/Salvatoxls.ods"  ' file destinazione
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
Sheet1 = DocName.Sheets(0)
dRange  = Sheet1.getCellRangeByName("A2:b4") ' range destinazione
dRange.setDataArray(Range)
document   = ThisComponent'
Dim args2(1) As New com.sun.star.beans.PropertyValue
args2(0).Name = "InteractionHandler"
args2(0).Value = ""
args2(1).Name = "FilterName"
args2(1).Value = "MS Excel 97" REM Change the export filter
Document.storeToURL("file:///F:/download/Salvatoxls.xls",args2())
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
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Ho provato, ma continua a salvarmi (seppure correttamente in formato excel), non il file denominato "ordiniopen.ods" ma "il foglio del file del "gestionale.ods" (ovvero la fonte da cui preleva il range da copiare e poi incollare sul "ordiniopen.ods" ) In pratica invece di rendere attivo e dunque salvare il file openordini.ods in formato xls, rende attivo il foglio da cui lancio la macro e salva solo quel foglio in excel... (spero di essermi più o meno spiegato
OpenOffice 4.1.9 su Windows 10 home
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da patel »

Io l'ho provata e mi funziona, a questo punto non ti rimane che allegare i file
-------------------
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
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Ho provato ma il file è ben oltre le dimensioni consentite di 2 m, dovrei fare un alleggerimento abbastanza compesso :)

Mi permetto a questo punto di provare a bypassare il problema con una soluzione alternativa e molto più diretta:

Il mio file "gestionale.ods" ha nel primo foglio "Ordine tabacchi" un elenco su 2 colonne, e poi moltissimi altri fogli...
Vorrei a questo punto capire se posso salvare il solo primo foglio e non tutto il file e salvarlo con la specifica >salva con nome "ordineexcel.xls" e se addirittura possibile che tale file appena salvato si chiudesse tornando poi ad una certa cella di un certo foglio del mio "gestionale.ods"

Perdonami se abuso della tua pazienza...
OpenOffice 4.1.9 su Windows 10 home
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8813
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da charlie »

Ciao, puoi usare la mail del forum per allegati pesanti: viewtopic.php?f=8&t=6294
P.S. No Dropbox, non ho verificato se funziona ancora.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Appena inviata dall'email blueicetovaglieri@gmail.com
OpenOffice 4.1.9 su Windows 10 home
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8813
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da charlie »

Al momento non risulta.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da patel »

GianniRm1968 ha scritto:Ho provato ma il file è ben oltre le dimensioni consentite di 2 m, dovrei fare un alleggerimento abbastanza compesso :)

Mi permetto a questo punto di provare a bypassare il problema con una soluzione alternativa e molto più diretta:

Il mio file "gestionale.ods" ha nel primo foglio "Ordine tabacchi" un elenco su 2 colonne, e poi moltissimi altri fogli...
Un alleggerimento non è mai complesso, nel tuo caso elimina tutti i fogli salvo il primo e salva con altro nome.
Mai mettere la propria email in un post di un forum, potresti essere sommerso da spam
-------------------
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
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da GianniRm1968 »

Ho provato a togliere i fogli, ma dopo un po mi va in crash
OpenOffice 4.1.9 su Windows 10 home
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2997
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Salva e chiudi file 2 lanciando macro dal file 1

Messaggio da lucky63 »

GianniRm1968 ha scritto:provare a bypassare il problema con una soluzione alternativa e molto più diretta
Allego esempio di una possibile soluzione la quale prevede che inizialmente il file "Ordineexcel.xls", composto da un solo foglio (anche vuoto), sia già stato salvato in formato Excel97-2003 nel percorso di salvataggio impostato nella macro.

La macro deve essere adeguata come "PercorsoSalvataggio" in base al proprio sistema operativo e esigenze.
Nell’esempio è collegata al pulsante “Ordineexcel.xls” aggiunto alla barra strumenti standard.
Test - Macro - AggiornaOrdineTabacchiXls.png

Codice: Seleziona tutto

Sub AggiornaOrdineXls
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=11284
Rem Propongo una soluzione alternativa.
Rem Questa macro prevede che nel percorso di salvataggio sia già stato salvato 
Rem il file "Ordineexcel.xls" in formato Excel97-2003 composto di UN SOLO foglio.
Rem ----- Adeguare il "PercorsoSalvataggio" in base al proprio sistema operativo e esigenze.

Dim Dummy()
Doc = ThisComponent
fOrdineTabacchi = Doc.Sheets.GetByName("Ordine tabacchi")
Cella  = fOrdineTabacchi.GetCellRangeByName("A1")
Rem Cella attiva diventerà "Ordineabacchi.A1"
CellaAttiva = Doc.CurrentController.Select(Cella)

Rem ----- Imposto i parametri di percorso e nomefile
PercorsoSalvataggio = ConvertToUrl("file:///home/NomeUTENTE/Scrivania/") 'DA CAMBIARE Esempio percorso Linux
'PercorsoSalvataggio = ConvertToUrl("file:///C:/Percorso/")        'DA CAMBIARE Esempio percorso Windows
NomeDelFile = "Ordineexcel"

Rem ----- Apro Il file già presalvato in formato xls e con un solo foglio
OrdineXls = StarDesktop.loadComponentFromURL(PercorsoSalvataggio & NomeDelFile & ".xls" ,"_blank", 0, Dummy() )

Rem Rinomino il foglio presente
OrdineXls.Sheets(0).name = "VecchioFoglio"

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 vecchio foglio
OrdineXls.Sheets.RemoveByName("VecchioFoglio")

Rem ----- Salvo il FileXls e lo chiudo
OrdineXls.Store(True)
OrdineXls.Close(True)

Rem Avviso finale
MsgBox("Ordineexcel.xls Aggiornato " , 0 , "ATTENZIONE:") 

End sub
.
Allegati
Test - Macro - AggiornaOrdineTabacchiXls.ods
(17.95 KiB) Scaricato 78 volte
GianniRm1968
Messaggi: 32
Iscritto il: mercoledì 17 febbraio 2021, 23:29

Re: [Risolto]Salva e chiudi file 2 lanciando macro dal file

Messaggio da GianniRm1968 »

Grazie con le suggerite modifiche la macro funziona come dovuto!
OpenOffice 4.1.9 su Windows 10 home
Rispondi