Count fogli di lavoro in più file
Considera una situazione in cui ti imbatti in 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 ciascuna cartella di lavoro. Se hai un problema simile, non 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 un 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, fai clic su qui
Di seguito è riportata l’istantanea dei file salvati in una cartella con estensione .xlsx
Nota: non sono presenti file protetti da password.
Per ottenere il codice, dobbiamo seguire i passaggi seguenti per avviare VB editor:
Fare clic sulla scheda Sviluppatore Dal gruppo Codice, selezionare Visual Basic
-
Copia il codice seguente 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 ' Folder path where the workbooks are located. WkbPath = "C:\Users\Test" ' Name of worksheet with the workbook list. Set Wks = Worksheets("Sheet1") ' Starting cell of workbook list. Set Rng = Wks.Range("A2") ' Get the range of cells in the workbook name list. Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp) If RngEnd.Row >= Rng.Row Then Set Rng = Wks.Range(Rng, RngEnd) ' Create the needed ADO objects fro this macro. Set Conn = CreateObject("ADODB.Connection") Set Cat = CreateObject("ADOX.Catalog") ' Add a final backslash the path if needed. WkbPath = IIf(Right(WkbPath, 1) <> "\", WkbPath & "\", WkbPath) ' Step through each cell in the workbook list. For Each Cell In Rng ' Get the worksheet count for the workbook. ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ & WkbPath & Cell _ & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;""" Conn.Open ConnStr Set Cat.ActiveConnection = Conn ' Copy the count to the cell one column to right of the workbook name in the list. Cell.Offset(n, 1) = Cat.Tables.Count Conn.Close Next Cell ' Clean up. Set Cat = Nothing Set Conn = Nothing End Sub
immagine: https: //www.office-skill.site/images/wp-content-uploads-2015-07-img37.png [img3, width = 796, height = 490]
===
-
Man mano che 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 Macro abilitata.
Tutti i file sopra hanno estensione .xlsx Aggiungiamo un foglio excel fittizio, ad esempio Foglio 10 Nel caso in cui abbiamo un file con lo stesso nome con estensioni .xlsx e .xls, dobbiamo menzionare il nome del file con le rispettive estensioni come bene nel nostro file di test (colonna A) in modo che la macro possa identificare il file a cui ci riferiamo e darci il risultato corretto Se non abbiamo menzionato o ci siamo dimenticati di menzionare l’estensione per il file con lo stesso nome, la macro darà noi 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, dobbiamo menzionare il nome del file con le rispettive estensioni. L’istantanea dell’output finale è illustrata di seguito:
Conclusione: utilizzando il codice macro sopra riportato possiamo contare il numero di fogli di lavoro in più file e se necessario per ottenere il risultato personalizzato possiamo apportare qualche modifica al codice VBA.
Se i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.
_ Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]_