/ / Bestanden in een map in Excel VBA

Bestanden in een map in Excel VBA

Hieronder zullen we een programma bekijken in Excel VBA dat loopt door alle gesloten werkmappen en werkbladen in een directoryen geeft alle namen weer.

Download Book1.xls, Book2.xls, Book3.xls, Book4.xls en Book5.xls en voeg ze toe aan "C: test"

Situatie:

Bestanden in een directoryvoorbeeld

Voeg de volgende coderegels toe aan de opdrachtknop:

1. Eerst declareren we twee variabelen van het type String, een werkbladobject en twee variabelen van het type Integer.

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

2. Schakel schermupdate uit om flikkering van het scherm te voorkomen.

Application.ScreenUpdating = False

3. Initialiseer de variabele map. We gebruiken de functie Dir om de eerste * .xl ?? te vinden bestand opgeslagen in deze map.

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

Opmerking: de functie Dir ondersteunt het gebruik van jokertekens met meerdere tekens (*) en enkele tekens (?) Om naar alle verschillende typen Excel-bestanden te zoeken.

4. De variabele bestandsnaam bevat nu de naam van het eerste Excel-bestand in de map. Voeg een Do While Loop toe.

Do While fileName <> ""

Loop

Voeg de volgende coderegels (op 5, 6, 7, 8 en 9) toe aan de lus.

5. Initialiseer de variabelen van het type Geheel getal en voeg de naam van het Excel-bestand toe aan de eerste kolom van rij i.

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

6. Er is geen eenvoudige manier om gegevens (of bladnamen) uit gesloten Excel-bestanden te extraheren. Daarom openen we het Excel-bestand.

Workbooks.Open (directory & fileName)

7. Voeg alle bladnamen van het Excel-bestand toe aan de andere kolommen van rij 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. Sluit het Excel-bestand.

Workbooks(fileName).Close

9. De Dir-functie is een speciale functie. Om de andere Excel-bestanden te krijgen, kunt u de functie Dir opnieuw gebruiken zonder argumenten.

fileName = Dir()

Opmerking: als er geen bestandsnamen meer overeenkomen, geeft de functie Dir een tekenreeks met de lengte nul (""). Als gevolg hiervan verlaat Excel VBA de Do While-lus.

10. Schakel het updaten van het scherm opnieuw in (buiten de lus).

Application.ScreenUpdating = True

11. Test het programma.

Resultaat:

Bestanden in een map in Excel VBA

Lees ook: