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

img1

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

img2

  • 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]

===

img4

  • Man mano che eseguiamo la macro, otterremo il numero di fogli di lavoro. Fare riferimento all’istantanea di seguito:

img5

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:

img6

  • 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:

img7

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.

rar icon

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]_