Toon posts:

[Excel XP] Macro uitvoeren op meerdere bestanden

Pagina: 1
Acties:
  • 912 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hier een vraag voor de Die-hard excel/vb programmeur.

Ik heb een macro geschreven die op 1 sheet van toepassing is. Deze macro loopt in de geopende sheet alle tabbladen door om te zoeken naar bepaalde waarden.

Is het mogelijk om deze macro uit te laten voeren over 1200 sheets die in een directory staan zonder deze in elke sheet te importeren en handmatig te starten?
De sheets in de directory hebben geen vastgestelde naamgeving, dus ik kan er geen loop van maken.

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Je kan dit wellicht doen met VBscript. Maak een loop die door alle bestanden gaat in de directory en maak een VBscript object van het bestand, door:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Set fso = CreateObject ("Scripting.FileSystemObject")
Set f = fso.GetFolder("C:\mydir")

For Each file In f.Files
   Set appExcel = CreateObject("Excel.Application")
   Set workbook = appExcel.WorkBooks.open (f.Name)

    For Each wSheet in workbook.sheets
        'Hier moet je dan wat met de sheets doen...
    Next

   Set appExcel = Nothing
   Set workbook = Nothing
Next

Verwijderd

Topicstarter
Ga ik uitproberen. Ik houd je op hoogte :D

Verwijderd

Topicstarter
Als ik het volgende invoer bij:

Set f = fso.GetFolder("h:\test")

krijg ik de volgende foutmelding tijdens het uitvoeren:

test.xls kan niet worden gevonden. Hij doorzoekt dus niet de directory, maar hij is op zoek naar een bestand.

Verwijderd

Je kan het ook in VBA doen, dit zou ongeveer wel moeten werken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub temp()
Dim file As String
Dim wrkbkopen As Workbook

file = Dir("C:\temp\*.xls")
Do While file <> ""
    wrkbkopen = Workbooks.Open("C:\temp\" & file)
    MacroRunnen
    wrkbkopen.Close True
    Dir
Loop
End Sub


Even opletten dat de macro die je start een persoonlijke macro is (of hoe je dat ook noemt) en werkt op de active workbook.

Verwijderd

Topicstarter
Werkt perfect met wat kleine aanpassingen.
Dit is het uiteindelijke resultaat:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim file As String
Dim wb As Workbook

file = Dir("d:\test\*.xls")
Do While file <> ""
    Set wb = Workbooks.Open("d:\test\" & file)
    
    "De macro"    

    wb.Close True
    file = Dir()
Loop

End Sub
Pagina: 1