Nombre de feuilles de travail dans plusieurs fichiers
Pensez à une situation dans laquelle vous rencontrez quotidiennement un nombre de fichiers Excel et vous souhaitez un mécanisme rapide pour vous aider à trouver le nombre de feuilles de calcul présentes dans chaque classeur. Si vous rencontrez un problème similaire, ne manquez pas cet article car il vous aidera beaucoup .
Dans cet article, nous allons apprendre à compter les feuilles de calcul dans plusieurs fichiers avec du code VBA.
Question: * J’ai besoin d’une macro capable de lire une liste de noms de fichiers et de renvoyer le nombre de feuilles de calcul présentes dans chacun des fichiers (il s’agit d’un mécanisme d’audit pour garantir que le nombre correct de feuilles de calcul est présent dans une série de fichiers créés via un autre processus). La macro devra établir le chemin du dossier où se trouvent les fichiers (tous dans le même dossier), puis localiser le premier fichier, identifier le nombre de feuilles de calcul et répéter pour le fichier suivant, etc.
Je pensais pouvoir le faire avec une formule en référençant simplement les noms de fichiers, mais je pense qu’Excel n’a pas de formule simple pour le nombre de feuilles de calcul. Merci!
Si vous souhaitez lire la question d’origine, cliquez sur ici
Voici un instantané des fichiers enregistrés dans un dossier avec l’extension .xlsx
Remarque: il n’y a pas de fichiers protégés par mot de passe.
Pour obtenir le code, nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB:
Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic
-
Copiez le code ci-dessous dans le module 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
image: https: //www.office-skill.site/images/wp-content-uploads-2015-07-img37.png [img3, largeur = 796, hauteur = 490]
===
-
Au fur et à mesure que nous exécutons la macro, nous obtiendrons le nombre de feuilles de calcul. Reportez-vous à l’instantané ci-dessous:
Remarque: la macro ci-dessus fonctionnera pour l’extension .xlsx & .xls et non pour l’extension activée par macro .xlsm.
Tous les fichiers ci-dessus sont une extension .xlsx Ajoutons une feuille Excel factice, c’est-à-dire Feuille 10 Dans le cas où nous aurions un fichier avec le même nom ayant des extensions .xlsx et .xls, nous devons mentionner le nom du fichier avec leurs extensions respectives comme bien dans notre fichier de test (colonne A) afin que la macro puisse identifier le fichier auquel nous faisons référence & nous donner le résultat correct Si nous n’avons pas mentionné ou avons manqué de mentionner l’extension du fichier avec le même nom, alors la macro donnera nous le décompte de l’extension .xlsx. Reportez-vous à l’instantané ci-dessous:
-
Pour obtenir le nombre de feuilles pour la feuille 10 avec les extensions .xlsx et .xls, nous devons mentionner le nom du fichier avec leurs extensions respectives. L’image de la sortie finale est illustrée ci-dessous:
Conclusion: En utilisant le code macro ci-dessus, nous pouvons compter le nombre de feuilles de calcul dans plusieurs fichiers et si nécessaire pour obtenir le résultat personnalisé, nous pouvons apporter un peu de modification dans le code VBA.
Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]