/ / Filer i en katalog i Excel VBA

Filer i en katalog i Excel VBA

Nedan ser vi på ett program i Excel VBA den där loopar genom alla slutna arbetsböcker och arbetsblad i en katalog, och visar alla namn.

Hämta Book1.xls, Book2.xls, Book3.xls, Book4.xls och Book5.xls och lägg till dem till "C: test"

Situation:

Filer i ett katalogexempel

Lägg till följande kodlinjer till kommandoknappen:

1. Först deklarerar vi två variabler av typen String, ett kalkylarkobjekt och två variabler av typen Integer.

Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer

2. För att undvika skärmflimmer, stäng av skärmuppdatering.

Application.ScreenUpdating = False

3. Initialisera den variabla katalogen. Vi använder Dir-funktionen för att hitta den första * .xl ?? filen lagrad i den här katalogen.

directory = "c:test"
fileName = Dir(directory & "*.xl??")

Obs! Dir-funktionen stöder användningen av flera tecken (*) och enstaka (?) Vykort för att söka efter alla olika typer av Excel-filer.

4. Den variabla filenamn innehåller nu namnet på den första Excel-filen som finns i katalogen. Lägg till ett gör medan loop.

Do While fileName <> ""

Loop

Lägg till följande kodlinjer (vid 5, 6, 7, 8 och 9) till slingan.

5. Initiera variablerna av typen Integer och lägg till namnet på Excel-filen till den första kolumnen i rad i.

i = i + 1
j = 2
Cells(i, 1) = fileName

6. Det finns inget enkelt sätt att extrahera data (eller arknamn) från slutna Excel-filer. Därför öppnar vi Excel-filen.

Workbooks.Open (directory & fileName)

7. Lägg till alla arknamn på Excel-filen till övriga kolumner i rad i.

For Each sheet In Workbooks(fileName).Worksheets
    Workbooks("files-in-a-directory.xls").Worksheets(1).Cells(i, j).Value = sheet.Name
    j = j + 1
Next sheet

8. Stäng Excel-filen.

Workbooks(fileName).Close

9. Dir-funktionen är en specialfunktion. För att få de andra Excel-filerna kan du använda Dir-funktionen igen utan några argument.

fileName = Dir()

Obs! När inga fler filnamn matchar returnerar funktionen Dir en nolllängdsträng (""). Som ett resultat kommer Excel VBA att lämna Do While loop.

10. Slå på skärmuppdateringen igen (utanför slingan).

Application.ScreenUpdating = True

11. Testa programmet.

Resultat:

Filer i en katalog i Excel VBA

Läs också: