Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VBA] Come listare file dato 1 percorso

    Ho un problema nel listare file usando VBA di Access.
    Sono riuscito a listare le cartelle ma non i file perchè per i file il metodo che conosco io (Getfile) vuole il nome del file ma io non lo conosco.

    Questo è quello che lista le cartelle(in questo caso lista la cartella "prova" nel Desktop):

    codice:
    Dim fs As Object
    Dim folder
    Dim subfolder
    Dim s
    Dim f
    Dim fld
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\Users\Riki\Desktop\prova")
    Set subfolder = folder.SubFolders
    
    f = fso.GetFileName("C:\Users\Riki\Desktop\prova\")
    
    For Each fld In subfolder
        Testo2 = Testo2 & fld.Name & f
    Next
    a questo piccolo programma ci volevo aggiungere il listare dei file, così che mi listi tutti file e cartelle dato un percorso.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Guarda che, senza scomodorare il FSO, in VBA si usa la funzione Dir() che è davvero banale da usare, il link sotto mostra 3 metodi di ricerca usando Dir(), FSO e API:

    How To Search Directories to Find or List Files
    http://support.microsoft.com/kb/185476/en-us

    e se hai VB6.0 trovi l'esempio WinSeek qui
    C:\Programmi\Microsoft Visual Studio\MSDN98\98VS\1040\SAMPLES\VB98\Filects

    Tutti gli esempi mostrano anche come usare la ricorsione per elaborare le sotto-cartelle.


    Comunque, con il FSO puoi ottenere l'elenco dei files usando un ciclo For Each...

    Ad esempio, il seguente script elimina tutti i file [*.tmp] da una cartella :
    codice:
       Dim AFolder, AFile, AllFiles
       Dim FileSpec , NumFile, MyVar 
    
       On Error Resume Next  
    
       FileSpec = "TMP"
       Set AFolder = FSO.GetFolder(<percorso_cartella>)
       Set AllFiles = AFolder.Files   
    
       For Each AFile In AllFiles
            IF UCase(FSO.GetExtensionName(AFile.Path)) = FileSpec Then
             FSO.DeleteFile AFile
             NumFile = NumFile + 1
          End If
       Next
    
       If NumFile > 0 Then
          MyVar = MsgBox (NumFile & " file eliminati.")
       Else
          MyVar = MsgBox ("Nessun file eliminato.")
       End If

  3. #3
    Grazie =)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.