/ / Importera ark med Excel VBA

Importera ark med Excel VBA

Nedan ser vi på ett program i Excel VBA den där importera ark från andra Excel-filer till en Excel-fil.

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

Situation:

Importera ark med Excel VBA

Lägg till följande kodlinjer till kommandoknappen:

1. Först deklarerar vi två variabler av typen String, ett Arbetsblad objekt och en variabel av typen Integer.

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

2. Stäng av skärmuppdatering och visa varningar.

Application.ScreenUpdating = False
Application.DisplayAlerts = 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 och 8) till slingan.

5. Det finns inget enkelt sätt att kopiera kalkylblad från stängda Excel-filer. Därför öppnar vi Excel-filen.

Workbooks.Open (directory & fileName)

6. Importera arken från Excel-filen till import-sheet.xls.

For Each sheet In Workbooks(fileName).Worksheets
    total = Workbooks("import-sheets.xls").Worksheets.count
    Workbooks(fileName).Worksheets(sheet.Name).Copy _
    after:=Workbooks("import-sheets.xls").Worksheets(total)
Next sheet

Förklaring: det rörliga antalet håller reda på det totala antalet kalkylblad i import-sheet.xls. Vi använder kopieringsmetoden i kalkylarkobjektet för att kopiera varje kalkylblad och klistra in det efter det sista kalkylbladet för import-sheets.xls.

7. Stäng Excel-filen.

Workbooks(fileName).Close

8. 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.

9. Slå på skärmuppdatering och visa varningar igen (utanför slingan).

Application.ScreenUpdating = True
Application.DisplayAlerts = True

10. Testa programmet.

Resultat:

Importera arkresultat

Läs också: