Pubblicato il 4 Luglio 2020 da Maurizio Matetich
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.
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 StringIf IsNull(Me.CodiceFiscale) Then
Me.NrFile = Null
Else
CartellaDocumenti = PercorsoPratiche + Me.CodiceFiscale + “\”
‘PercorsoPratiche è una variabile che mi permette di impostare il percorsoSet fs = CreateObject(“Scripting.FileSystemObject”)
If Not fs.FolderExists(CartellaDocumenti ) Then
Me.NrFile = Null ‘manca la cartella
Else
Me.NrFile = ContaFileInCartella(CartellaDocumenti )
End IfEnd 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.
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 LongstrName = Dir(strPercorso, vbHidden + vbNormal + vbReadOnly + vbSystem)
NrFile = 0Do While strName <> “”
NrFile = NrFile + 1
strName = Dir
LoopContaFileInCartella = 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 LongstrName = Dir(strPercorso, vbHidden + vbNormal + vbReadOnly + vbSystem)
NrFile = 0Do While strName <> “”
If Right(strName, 3) = “xls” Or Right(strName, 4) = “xlsx” Then
NrFile = NrFile + 1
End IfstrName = Dir
LoopContaFileExcelInCartella = NrFile
End Function
Scrivi un commento