In una maschera Access visualizzo i dati dei clienti.

Ad ogni cliente devo associare una cartella che contiene vari documenti (carta di identità, foto, relazioni …).

Con VBA per Access è facile creare una cartella con il nome uguale al codice fiscale del cliente.

Ma quando visualizzo i dati di un cliente, come faccio a sapere subito se ho già una cartella associata contenente dei documenti ? e quanti sono questi documenti ?

Contare i documenti presenti all’interno di una cartella.

Office online- contare file in cartella

Come potete notare, sopra al pulsante “Cartella cliente” è presente un numero. In questo caso è 4. Vuol dire che ci sono 4 file nella cartella associata al cliente.

Come posso ottenere questo risultato ?

Nell’evento “Su corrente” della maschera anagrafica inserisco il seguente codice VBA

‘controllo se esistono documenti nella cartella associata al cliente
Dim CartellaDocumenti As String

If IsNull(Me.CodiceFiscale) Then
Me.NrFile = Null
Else
CartellaDocumenti = PercorsoPratiche + Me.CodiceFiscale + “\”
‘PercorsoPratiche  è una variabile che mi permette di impostare il percorso

Set fs = CreateObject(“Scripting.FileSystemObject”)
If Not fs.FolderExists(CartellaDocumenti ) Then
Me.NrFile = Null ‘manca la cartella
Else
Me.NrFile = ContaFileInCartella(CartellaDocumenti )
End If

End If

Il campo Me.NrFile è posto sopra al pulsante “Cartella cliente” e permette di memorizzare il numero di file presenti nella cartella.

Quindi facendo clic sul pulsante si aprirà la cartella con i 4 file.

Office online - file presenti in cartella


La funzione ContaFileInCartella è inserita in un apposito modulo

Function ContaFileInCartella(ByVal strPercorso As String) As Long

‘conta i file presenti in una cartella
Dim strName As String
Dim NrFile As Long

strName = Dir(strPercorso, vbHidden + vbNormal + vbReadOnly + vbSystem)
NrFile = 0

Do While strName <> “”
NrFile = NrFile + 1
strName = Dir
Loop

ContaFileInCartella = NrFile

End Function

Semplice e veloce !

Vediamo anche una piccola variante 🙂

Ma se voglio sapere quanti sono i file Excel presenti nella cartella ? non il numero totale dei file, ma solo quelli con estensione XLS oppure XLSX.

Utilizzo una variante della funzione ContaFileInCartella.

Function ContaFileExcelInCartella(ByVal strPercorso As String) As Long
Dim strName As String
Dim NrFile As Long

strName = Dir(strPercorso, vbHidden + vbNormal + vbReadOnly + vbSystem)
NrFile = 0

Do While strName <> “”
If Right(strName, 3) = “xls” Or Right(strName, 4) = “xlsx” Then
NrFile = NrFile + 1
End If

strName = Dir
Loop

ContaFileExcelInCartella = NrFile

End Function