Fatta la parte 2., passiamo alla 1. (con grande logica :D ): vediamo come leggere in una cartella diversi file.
Intanto dichiariamo la variabile oDoc come pubblica (basta farlo fuori dalle funzioni o sub):
Dim oDoc As Object
Quindi "camminiamo" per la cartella scelta attraverso la funzione OpenDirectory, che verrà spiegata alla fine, con la Sub walkFiles
Sub walkFiles
sDir = OpenDirectory("Seleziona la directory dei file da importare")
'oSfA è un oggetto che permette l'accesso ai file e alla directory, con varie 'funzioni utili
oSfA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
If oSfa.exists(sDir) Then
'nella variabil oFoldCont è salvato l'array, o matrice di variabili, creato con 'getFolderContents, e contiene i nomi dei file all'interno della cartella
oFoldCont = oSfa.getFolderContents(sDir, True)
Endif
'Definiamo la proprietà per aprire i file in modo nascosto (per evitare un albero 'di Natale)
dim mArgs(0) As New com.sun.star.beans.PropertyValue
mArgs(0).Name = "Hidden"
mArgs(0).Value = True
For i=0 to UBound(oFoldCont)'Apriamo il file numero i
oDoc = StarDesktop.loadComponentFromURL(oFoldCont(i), "_blank", 0, mArgs())'eseguiamo la ricerca delle variabili
getVariables
'Infini chiudiamo il file
oDoc.close(True)
Next
End sub
'Questa funzione l'abbiamo già vista nel post (1)
Sub getVariables
Dim mNomi(2)
Dim mVar(2)
oSheet = oDoc.Sheets.getByIndex(0)
mNomi() = array("COGNOME","NOME","ETA'")
mVar() = array(sCognome,sNome,sVar)
For j=0 to UBound(mNomi)
For i=0 To 50
oCell = oSheet.getCellByPosition(0,i)
If oCell.string = mNomi(j) Then
mVar(j) = oSheet.getCellByPosition(1,i).String
Exit For
Endif
Next
Next
print mVar(0) & "," & mVar(1) & "," & mVar(2)
End Sub
'Questa funzione apre la maschera di OOo per selezionare una directory
'***Open and choose a folder*************************************
Function OpenDirectory(Optional sDialogTitle As String)
oFolderPicker = createUnoService ("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.DialogTitle = sDialogTitle
If oFolderPicker.execute() Then
sDir = oFolderPicker.Directory
Else
OpenDirectory = 0
Endif
OpenDirectory = sDir
End Function
Per il momento dovremmo essere a posto... e vedere tot messaggi secondo quanti file abbiamo caricato nella cartella di test.
A presto!
Otto Marzo
14 anni fa
Buongiorno,
RispondiEliminaho due file di calc , file1 e file2 , apro il file1 e tramite una macro seleziono e apro il file2 (senza visualizzarlo) e copio dei valori da insire nel file1, con excel ci sono riuscito ma con calc e basic ho difficoltà .. stavo leggendo questo articolo ma ancora non ci riesco.
Potete aiutarmi?