Considera una situazione in cui incontri un numero di file excel su base giornaliera e desideri un meccanismo rapido che ti aiuti a trovare il conteggio dei fogli di lavoro presenti in ogni cartella di lavoro. Se hai un problema simile, non devi perderti questo articolo perché ti aiuterà molto.
In questo articolo impareremo come contare i fogli di lavoro in più file con codice VBA.
Domanda:Ho bisogno di una macro in grado di leggere un elenco di nomi di file e restituire il numero di fogli di lavoro presenti in ciascuno dei file (questo è un meccanismo di controllo per garantire che il numero corretto di fogli di lavoro sia presente in una serie di file creati tramite altro processo). La macro dovrebbe stabilire il percorso della cartella in cui si trovano i file (tutti nella stessa cartella), quindi individuare il primo file, identificare il conteggio del foglio di lavoro e ripetere per il file successivo, ecc.
Pensavo di poterlo fare con una formula semplicemente facendo riferimento ai nomi dei file, ma credo che Excel non abbia una formula semplice per i conteggi dei fogli di lavoro. Grazie!
Se vuoi leggere la domanda originale clicca qui
Di seguito è riportata l'istantanea dei file salvati in una cartella con estensione .xlsx
Nota: non ci sono file protetti da password.
Per ottenere il codice, dobbiamo seguire i passaggi seguenti per avviare l'editor VB:
- Fare clic sulla scheda Sviluppatore
- Dal gruppo Codice, seleziona Visual Basic
- Copia il codice sottostante nel modulo standard
Sub ListSheetCounts() Dim Cell As Range Dim Conn As Object Dim Cat As Object Dim ConnStr As String Dim n As Long Dim Rng As Range Dim RngEnd As Range Dim WkbPath As Variant Dim Wks As Worksheet ' Percorso della cartella in cui si trovano le cartelle di lavoro. WkbPath = "C:\Users\Test" ' Nome del foglio di lavoro con l'elenco delle cartelle di lavoro. Set Wks = Worksheets("Sheet1") ' Cella iniziale dell'elenco delle cartelle di lavoro. Set Rng = Wks.Range("A2") ' Ottieni l'intervallo di celle nell'elenco dei nomi della cartella di lavoro. Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp) If RngEnd.Row >= Rng.Row Then Set Rng = Wks.Range(Rng, RngEnd) ' Crea gli oggetti ADO necessari per questa macro . Set Conn = CreateObject("ADODB.Connection") Set Cat = CreateObject("ADOX.Catalog") ' Aggiungi una barra rovesciata finale al percorso, se necessario. WkbPath = IIf(Right(WkbPath, 1) "\", WkbPath & "\", WkbPath) ' Passa attraverso ogni cella nell'elenco delle cartelle di lavoro. Per ogni cella in Rng ' Ottieni il conteggio del foglio di lavoro per la cartella di lavoro. ConnStr = "Fornitore=Microsoft.ACE.OLEDB.12.0;Origine dati=" _ & WkbPath & Cell _ & ";Proprietà estese=""Excel 12.0 Xml;HDR=YES;IMEX=1;""" Conn.Apri ConnStr Set Cat.ActiveConnection = Conn ' Copia il conteggio nella cella una colonna a destra del nome della cartella di lavoro nell'elenco. Cell.Offset(n, 1) = Cat.Tables.Count Conn.Close Next Cella ' Pulisci. Imposta Cat = Nulla Imposta Conn = Nulla End Sub
- Quando eseguiamo la macro, otterremo il numero di fogli di lavoro. Fare riferimento all'istantanea di seguito:
Nota: la macro sopra funzionerà per l'estensione .xlsx e .xls e non per l'estensione .xlsm abilitata alla macro.
- Tutti i file di cui sopra sono con estensione .xlsx
- Aggiungiamo un foglio excel fittizio, ad esempio il foglio 10
- Nel caso in cui abbiamo un file con lo stesso nome con estensioni .xlsx e .xls, allora dobbiamo menzionare il nome del file con le rispettive estensioni anche nel nostro file di prova (colonna A) in modo che la macro possa identificare il file che siamo facendo riferimento a e darci il risultato corretto
- Se non abbiamo menzionato o abbiamo mancato di menzionare l'estensione per il file con lo stesso nome, la macro ci darà il conteggio dell'estensione .xlsx. Fare riferimento all'istantanea di seguito:
- Per ottenere il numero di fogli per il Foglio 10 con estensioni .xlsx e .xls, è necessario menzionare il nome del file con le rispettive estensioni
L'istantanea dell'output finale è illustrata di seguito:
Conclusione: Utilizzando il codice macro sopra, possiamo contare il numero di fogli di lavoro in più file e se è necessario ottenere il risultato personalizzato, possiamo apportare piccole modifiche al codice VBA.
Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare, completare o innovare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica