Basic collegamento file esterno

Scusate la mia immensa ignoranza, mi muovo sufficientemente quando il data base è nello stesso file della macro, ma se volessi andarlo a cercare in un file esterno quali sarebbero le istruzioni?
Cerco di spiegarmi: dim foglio, foglio2, foglio3 as object, doc = thiscomponent, foglio = doc.sheets(0)
foglio2 = doc.sheets(1), foglio3 = doc.sheets(2) se la macro è collegata allo stesso file MA se la voglio pescare in un altro file quali sono le istruzioni? Ho 74 anni e sono in pensione invece di passare il tempo con le parole crociate mi diverto più con calc e basic. Comunque un grazie

Ti può essere molto utile vedere questo link:
https://forum.openoffice.org/it/forum/viewtopic.php?t=11594

Per accedere a un database (file Calc) esterno da una macro in LibreOffice Basic, devi seguire questi passaggi:

  1. Dichiarare le variabili necessarie:
    Basic

Dim docEsterno As Object
Dim fogliEsterno As Object
Dim foglioDesiderato As Object
Dim sPercorsoFile As String

docEsterno: Oggetto che rappresenterà il documento Calc esterno.
fogliEsterno: Oggetto che conterrà la collezione di fogli del documento esterno.
foglioDesiderato: Oggetto che rappresenterà il foglio specifico che vuoi utilizzare.
sPercorsoFile: Stringa che conterrà il percorso completo del file Calc esterno.
  1. Definire il percorso del file esterno:

Devi specificare il percorso completo del file Calc che vuoi aprire. Puoi farlo direttamente nella macro o recuperarlo da una cella, da un input utente, ecc.
Basic

sPercorsoFile = “file:///percorso/completo/del/tuo/file.ods” ’ Sostituisci con il tuo percorso

Importante: Il percorso del file deve essere in formato URL. Se hai un percorso locale come C:\Documenti\Dati.ods (su Windows) o /home/utente/Documenti/Dati.ods (su Linux), devi convertirlo in formato URL, ad esempio:

Windows: file:///C:/Documenti/Dati.ods (nota i tre slash e l'uso di / al posto di \)
Linux: file:///home/utente/Documenti/Dati.ods
  1. Aprire il documento esterno:

Utilizza la funzione StarDesktop.loadComponentFromURL per aprire il file esterno.
Basic

docEsterno = StarDesktop.loadComponentFromURL(sPercorsoFile, “_blank”, 0, Array())

sPercorsoFile: Il percorso del file esterno in formato URL.
"_blank": Specifica che il file deve essere aperto in una nuova finestra (puoi usare "_default" per aprirlo nella finestra corrente se nessun altro documento è aperto).
0: Flag che indica opzioni di caricamento (solitamente 0 per l'apertura standard).
Array(): Array di proprietà aggiuntive (solitamente vuoto per l'apertura standard).
  1. Accedere ai fogli del documento esterno:

Una volta aperto il documento, puoi accedere alla collezione dei suoi fogli utilizzando la proprietà Sheets.
Basic

Se Not IsNull(docEsterno) Then
fogliEsterno = docEsterno.Sheets
Else
MsgBox "Impossibile aprire il file esterno: " & sPercorsoFile
Exit Sub
End If

  1. Selezionare il foglio desiderato:

Puoi selezionare un foglio specifico per nome o per indice (come nel tuo esempio).

Per nome:

Basic

Dim sNomeFoglio As String
sNomeFoglio = “NomeDelTuoFoglio” ’ Sostituisci con il nome del foglio
foglioDesiderato = fogliEsterno.getByName(sNomeFoglio)
If IsNull(foglioDesiderato) Then
MsgBox “Il foglio '” & sNomeFoglio & “’ non è stato trovato nel file esterno.”
Exit Sub
End If

Per indice (partendo da 0):

Basic

Dim iIndiceFoglio As Integer
iIndiceFoglio = 1 ’ Per accedere al secondo foglio (l’indice parte da 0)
If fogliEsterno.Count > iIndiceFoglio Then
foglioDesiderato = fogliEsterno.getByIndex(iIndiceFoglio)
Else
MsgBox “L’indice del foglio specificato non è valido nel file esterno.”
Exit Sub
End If

  1. Lavorare con il foglio desiderato:

Ora che hai l’oggetto foglioDesiderato, puoi interagire con le sue celle, intervalli, ecc., proprio come faresti con un foglio nello stesso file della macro. Ad esempio, per leggere il contenuto della cella A1:
Basic

Dim cella As Object
cella = foglioDesiderato.getCellByPosition(0, 0) ’ Colonna 0, Riga 0 (A1)
Dim valore As Variant
valore = cella.getValue()
MsgBox "Il valore della cella A1 nel file esterno è: " & valore

  1. Chiudere il documento esterno (opzionale):

Se non hai più bisogno del file esterno aperto, puoi chiuderlo.
Basic

docEsterno.close(True) ’ True per salvare le modifiche (se ce ne sono), False per non salvare

Esempio completo:
Basic

Sub AccediDatabaseEsterno()

Dim docEsterno As Object
Dim fogliEsterno As Object
Dim foglioDesiderato As Object
Dim sPercorsoFile As String
Dim sNomeFoglio As String
Dim cella As Object
Dim valore As Variant

' Specifica il percorso del file esterno
sPercorsoFile = "file:///percorso/completo/del/tuo/file.ods" ' Sostituisci con il tuo percorso

' Specifica il nome del foglio che vuoi utilizzare
sNomeFoglio = "Foglio1" ' Sostituisci con il nome del tuo foglio

' Apri il documento esterno
docEsterno = StarDesktop.loadComponentFromURL(sPercorsoFile, "_blank", 0, Array())

' Verifica se il documento è stato aperto correttamente
If Not IsNull(docEsterno) Then
    ' Accedi alla collezione dei fogli
    fogliEsterno = docEsterno.Sheets

    ' Seleziona il foglio per nome
    foglioDesiderato = fogliEsterno.getByName(sNomeFoglio)

    ' Verifica se il foglio è stato trovato
    If Not IsNull(foglioDesiderato) Then
        ' Esempio: leggi il valore della cella A1
        cella = foglioDesiderato.getCellByPosition(0, 0)
        valore = cella.getValue()
        MsgBox "Il valore della cella A1 del foglio '" & sNomeFoglio & "' nel file esterno è: " & valore

        ' Qui puoi aggiungere altre operazioni con il foglio desiderato

        ' Chiudi il documento esterno (opzionale)
        docEsterno.close(False) ' Non salvare le modifiche in questo esempio
    Else
        MsgBox "Il foglio '" & sNomeFoglio & "' non è stato trovato nel file esterno."
    End If
Else
    MsgBox "Impossibile aprire il file esterno: " & sPercorsoFile
End If

End Sub

Ricorda di sostituire “file:///percorso/completo/del/tuo/file.ods” con il percorso effettivo del tuo file esterno e “NomeDelTuoFoglio” con il nome del foglio che ti interessa.