Newsgroup: it.comp.appl.access
Titolo: importare i files excel presenti in tutte le sotto-cartelle

Ciao a tutti. In A97:
Vorrei creare una procedura che importi tutti i files excel contenuti
all'interno di alcune cartelle.
Ho preso dal Sito Comune la routine di Lorenzo Coronati "Creare una tabella
contenente i nomi dei files presenti in una directory." Una volta fatta la
tabella, per ogni record importo il file excel contenuto nella cartella.
Mi chiedevo: è possibile modificare la funzione in modo tale che, oltre ad
inserire il nome del file prenda anche il percorso delle cartelle? In
pratica se ho una cartella principale, con sotto-cartelle e file:
C:\DATI
        \Dati1
             excelA.xls
        \Dati2
             excelA.xls
             excelB.xls
.........
La tabella dovrebbe essere
NomeFile | Percorso
excelA.xls | C:\DATI\Dati1
excelA.xls | C:\DATI\Dati2
excelB.xls | C:\DATI\Dati2
In questo modo potrei importare tutti i files di excel contenuti in tutte le
sottocartelle.
Ho già provato inserendo "a mano" i percorsi e funzione.
Potete aiutarmi?
Grazie a tutti in anticipo

 ha scritto nel messaggio
news:415902f9$1...@x-privat.org...

Prova a modificare la sub elencafile in questa maniera:
Public Sub elencafile(Optional d As String, _
Optional j As String)
'Argomenti:
' d=directory
' j=maschera di match
Dim t As DAO.TableDef
Dim r As DAO.Recordset
Dim t2 As DAO.TableDef
Dim r2 As DAO.Recordset
Dim s As String
If d = "" Then d = CurDir
If j = "" Then j = "*.*"
If Right(d, 1) <> "\" Then d = d & "\"
s = "Directory presenti in " & d
Set t2 = CurrentDb.CreateTableDef(s)
t2.Fields.Append t2.CreateField("Percorso", dbText)
CurrentDb.TableDefs.Append t2
Set r2 = CurrentDb.OpenRecordset(s, dbOpenTable)
s = Dir(d, vbDirectory)
Do While s <> ""
    If s <> "." And s <> ".." Then
        If (GetAttr(d & s) And vbDirectory) = _
        vbDirectory Then
            r2.AddNew
            r2!Percorso = d & s
            r2.Update
        End If
    End If
    s = Dir
Loop
s = "Files presenti in " & d
Set t = CurrentDb.CreateTableDef(s)
t.Fields.Append t.CreateField("NomeFile", dbText)
t.Fields.Append t.CreateField("Percorso", dbText)
CurrentDb.TableDefs.Append t
Set r = CurrentDb.OpenRecordset(s, dbOpenTable)
s = Dir(d & j)
Do While s <> ""
    r.AddNew
    r!NomeFile = s
    r!Percorso = Left(d, Len(d) - 1)
    s = Dir
    r.Update
Loop
r2.MoveFirst
Do Until r2.EOF
    s = Dir(r2!Percorso & "/" & j)
    Do While s <> ""
        r.AddNew
        r!NomeFile = s
        r!Percorso = r2!Percorso
        r.Update
        s = Dir
    Loop
    r2.MoveNext
Loop
Set t = Nothing
Set r = Nothing
Set t2 = Nothing
Set r2 = Nothing
DoCmd.DeleteObject acTable, _
"Directory presenti in " & d
End Sub
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 
La funzione Dir ti da' il nome del file compreso di percorso. Guarda i 
parametri nell'help
Ciauz
-- 
'gnurant come una cucuzza
Inviato da 
www.mynewsgate.net

 ha scritto nel messaggio
news:wvd6d.12709$N45.3...@twister2.libero.it...

Se lancio la funzione mi dà
errore di run-time 3001
Invalid argument
Il debug mi evidenzia la riga
Set t2 = CurrentDb.CreateTableDef(s)


 Ciauz



Per scrupolo ho provato la SUB di cui sopra ed a me funziona bene senza
darmi alcun errore.
Hai forse copiato male qualcosa, oppure nel tuo database non hai aggiunto i
riferimenti alla libreria Microsoft DAO.
