[Risolto] Macro Apri Files

Discussioni sulle caratteristiche di database
Rispondi
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

[Risolto] Macro Apri Files

Messaggio da Cinghiale78 »

Ciao a tutti!
In un formulario ho un pulsante a cui ho assegnato una macro con questo codice scopiazzato da qualche parte:

Codice: Seleziona tutto

Sub ApriPrivacy
Dim Doc As Object
Dim Url As String
Dim Dummy()

Url = "file:///D:\Documenti\AVIS\Registro Privacy.ods"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
end sub
che funziona; tuttavia, se passo il file a qualcun altro funziona solo se il percorso è lo stesso.
Come posso ovviare a questo problema?
Ultima modifica di charlie il sabato 3 aprile 2021, 14:35, modificato 4 volte in totale.
Motivazione: Aggiunta ✔ verde
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro Apri Files

Messaggio da charlie »

Certo, il percorso è scritto nero su bianco nella macro, se il file si trova altrove o si chiama in nome diverso, non funziona.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: Macro Apri Files

Messaggio da Cinghiale78 »

mmmmmmmmm Pensavo: magari riesco a farmi restituire in qualche modo il percorso del file odb dal quale parte il comando e utilizzarlo come argomento per aprire il file ods, ipotizzando che siano sempre nella stessa cartella. Sto vaneggiando?
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro Apri Files

Messaggio da charlie »

Perché non scrivere il percorso in una casella di testo e leggerlo?
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: Macro Apri Files

Messaggio da Cinghiale78 »

Ottima idea! Provo a lavorarci su
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: Macro Apri Files

Messaggio da Cinghiale78 »

Torno sull'argomento con la mia idea iniziale.
In questo post https://forum.openoffice.org/en/forum/v ... =20&t=8169 ho trovato questo codice che funziona:

Codice: Seleziona tutto

GlobalScope.BasicLibraries.loadLibrary("Tools")
path=DirectoryNameoutofPath(ThisComponent.getURL(),"/")
msgbox path
Ora dovrei passare il percorso al codice che apre il file col quale ho aperto il post.
Suggerimenti?
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: Macro Apri Files

Messaggio da Cinghiale78 »

Ho fatto da solo.
Eccolo:

Codice: Seleziona tutto

Sub ApriPrivacy2
Dim Doc As Object
Dim Url As String
Dim Dummy()

GlobalScope.BasicLibraries.loadLibrary("Tools")
path=DirectoryNameoutofPath(ThisComponent.getURL(),"/")
Url = path+"/Registro Privacy.ods"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
end sub
Però ho ancora un problema. Se eseguo la macro da Strumenti funziona, se la associo ad un pulsante non va: si inceppa nella funzione (Valore o tipo di dati non ammesso. Indice al di fuori dell'area definita).
PERCHE'?????
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: Macro Apri Files

Messaggio da Cinghiale78 »

Aggiornamento: in questo post https://stackoverflow.com/questions/478 ... sing-macro
si parla di questo problema.

"Alternatively, to do it with a macro, assign the following WritePath subroutine to run on the View created event."

Codice: Seleziona tutto

function GetPath() as string
    On Error Goto ErrorHandler
    GlobalScope.BasicLibraries.loadLibrary("Tools")
    GetPath = Tools.Strings.DirectoryNameoutofPath(ThisComponent.url, "/")
    ErrorHandler:
end function

Sub WritePath
    oSheet = ThisComponent.getSheets().getByIndex(0)
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setString(GetPath())
End Sub
...che però scrive il percorso su una cella, credo quella del foglio padre, per cui non va ancora bene...
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro Apri Files

Messaggio da charlie »

Ciao, hai sconfinato in Calc.
In Base, ci sono esempi nel forum come questo: viewtopic.php?f=13&t=9323&p=51565&hilit=Link#p51552
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: Macro Apri Files

Messaggio da Cinghiale78 »

Bella dritta. Non conoscevo queste proprietà (Operazione e URL). Ho notato che in questo modo il file ods aperto non è una copia, ma il file vero e proprio; inoltre, le macro di aggiornamento avviate all'apertura funzionano (questo mi risolve un grave problema su cui mi ero incastrato) .Dovrei solo implementarlo con l'idea iniziale (cartelle diverse in caso di file condiviso tra più macchine), ma diventa complicato.
Dovrei fare una macro che all'avvio del database controlli il percorso dal file in cui è posizionato, quindi vada a modificare le proprietà dei pulsanti scrivendo l'URL in base al percorso.
Provo a studiarci su, ma sembra ostico.
Grazie comunque, Charlie.
Enjoy!
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Cinghiale78
Messaggi: 29
Iscritto il: giovedì 25 febbraio 2021, 22:29

Re: [Risolto] Macro Apri Files

Messaggio da Cinghiale78 »

Utilizzando il metodo sopra descritto non c'è bisogno di fare nulla. Basta mettere la spunta a Strumenti->Opzioni->Carica/Salva->Generale->Salva URL relativamente al file system e (con qualche limite e accorgimento) LO fa tutto da solo.
Fantastico!
Cinghiale 78 - LibreOffice 7.0.4.2 Windows10
Rispondi