• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro uitvoeren op meerdere excel bestanden

Status
Niet open voor verdere reacties.

Roeland035

Gebruiker
Lid geworden
30 mrt 2015
Berichten
291
Beste forumleden,

Ik moet regelmatig een paar excel bestanden (.CSV) openen, filteren en opslaan als .xlsx formaat.
Ik heb er al naar gekeken en de macro werkt wanneer ik een knop maak in hetzelfde tabblad en de macro laat uitvoeren.

Mijn vraag is nu of ik niet een macro kan maken die deze macro uitvoert op alle bestanden in een bepaalde map.

Ik heb al het één en ander geprobeerd, maar zonder succes.

Dit is wat ik tot nu toe heb:
Code:
Sub werkuithanden()
   c0 = "C:\Users\RoelandvHouten\Dropbox\Saxion School\Leerjaar 2\Stage 1\Informatie\Macro Test\"
   c1 = Dir(c0 & "*.CSV")
   Do Until c1 = ""
      Workbooks.Add c0 & c1
      With ActiveWorkbook
            [COLOR="#FF0000"]Rows("1:1").Select
    Selection.AutoFilter
    Dim gevraagd As String

    gevraagd = InputBox("Letter productgroep? ", "zoeken")
    ActiveSheet.Range("$A$1:$AJ$50000").AutoFilter Field:=2, Criteria1:=gevraagd + "*", Operator:=xlFilterValues

    ActiveSheet.Range("$A$1:$AJ$50000").AutoFilter Field:=29, Criteria1:=">=5", _
        Operator:=xlAnd[/COLOR]
        .SaveAs Replace(c0 & c1, ".xlsx", "001.xls")
        .Close False
      End With
      c1 = Dir
   Loop
End Sub

Het stuk dat rood gekleurd is, is de macro die ik voorheen gebruikte en ook daadwerkelijk werkt, maar dan wel dmv een knop toe te voegen in elk bestand.

De code hierboven werkt echter niet, hij vervormd het gehele bestand en doet de raarste dingen en loopt uiteindelijk vast.
 
Ben er zelf achter gekomen! Zelfs met nog wat verbeteringen :)

Code:
Sub LoopAllExcelFilesInFolder()

Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim myExtension2 As String
Dim FldrPicker As FileDialog

'Optimize Macro Speed
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual

'Retrieve Target Folder Path From User
  Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)

    With FldrPicker
      .Title = "Select A Target Folder"
      .AllowMultiSelect = False
        If .Show <> -1 Then GoTo NextCode
        myPath = .SelectedItems(1) & "\"
    End With

'In Case of Cancel
NextCode:
  myPath = myPath
  If myPath = "" Then GoTo ResetSettings

'Target File Extension (must include wildcard "*")
  myExtension = "*.CSV"
  myExtension2 = "*.xlsx"

'Target Path with Ending Extention
  myFile = Dir(myPath & myExtension)

'Loop through each Excel file in folder
  Do While myFile <> ""
    'Set variable equal to opened workbook
      Set wb = Workbooks.Open(Filename:=myPath & myFile, Local:=True)
    
[COLOR="#FF0000"]      Rows("1:1").Select
    Selection.AutoFilter
    Dim gevraagd As String

    gevraagd = InputBox("Letter productgroep? ", "zoeken")
    ActiveSheet.Range("$A$1:$AJ$50000").AutoFilter Field:=2, Criteria1:=gevraagd + "*", Operator:=xlFilterValues

    ActiveSheet.Range("$A$1:$AJ$50000").AutoFilter Field:=29, Criteria1:=">=5", _
        Operator:=xlAnd[/COLOR]
    
    'Save and Close Workbook
      wb.SaveAs Replace(wb.FullName, ".CSV", ".xls"), 50
        wb.Close True

    'Get next file name
      myFile = Dir
  Loop

'Message Box when tasks are completed
  MsgBox "Task Complete!"

ResetSettings:
  'Reset Macro Optimization Settings
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub
 
Beste forumleden,

Ik zit nog steeds met een probleem.
Wanneer ik een RunMe.xls file maak en bij het openen van dit bestand de macro laat uitvoeren, geeft hij een error.
Ik krijg de fout: methode autofilter van klasse range mislukt

Iemand enig idee hoe ik dit kan oplossen?


Code:
Private Sub Workbook_open()

Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog

'Optimize Macro Speed
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual

'Retrieve Target Folder Path From User
  Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)

    With FldrPicker
      .Title = "Select A Target Folder"
      .AllowMultiSelect = False
        If .Show <> -1 Then GoTo NextCode
        myPath = .SelectedItems(1) & "\"
    End With

'In Case of Cancel
NextCode:
  myPath = myPath
  If myPath = "" Then GoTo ResetSettings

'Target File Extension (must include wildcard "*")
  myExtension = "*.CSV"

'Target Path with Ending Extention
  myFile = Dir(myPath & myExtension)

'Loop through each Excel file in folder
  Do While myFile <> ""
    'Set variable equal to opened workbook
      Set wb = Workbooks.Open(Filename:=myPath & myFile, Local:=True)
    
    Dim gevraagd As String

    gevraagd = InputBox("Letter productgroep? ", "zoeken")
    ActiveSheet.UsedRange.AutoFilter Field:=2, Criteria1:=gevraagd + "*", Operator:=xlFilterValues

    ActiveSheet.UsedRange.AutoFilter Field:=29, Criteria1:=">=5", _
        Operator:=xlAnd
    
    'Save and Close Workbook
      wb.SaveAs Replace(wb.FullName, ".CSV", ".xls"), 50
        wb.Close True

    'Get next file name
      myFile = Dir
  Loop

'Message Box when tasks are completed
  MsgBox "Task Complete!"

ResetSettings:
  'Reset Macro Optimization Settings
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub
 
ik gok dat veranderd moet worden in

Sylvester,

Dank voor je reactie, maar dit is het echter niet. Ik heb het zojuist geprobeerd en alsnog een foutmelding. De foutmelding zit hem echter wel in die regel.
Hij markeert namelijk: ActiveSheet.UsedRange.AutoFilter Field:=2, Criteria1:=gevraagd & "*", Operator:=xlFilterValues in het geheel.
 
dit gaat bij mij niet werken jouw "Runme" opent een test map waar jouw 2e file instaat maar ziet hem niet. jammer
 
dit gaat bij mij niet werken jouw "Runme" opent een test map waar jouw 2e file instaat maar ziet hem niet. jammer

Een test map? Als het goed is kan jezelf de folder opgeven waarin de omloop lijst te vinden is.

Ik heb het zojuist getest met een andere computer (om jou na te bootsen) en dat werkt precies ' tzelfde.
 
Laatst bewerkt:
Hij werkt al!
Ik moest voor die regel nog wb. zetten.
Dus wb.ActiveSheet.UsedRange.AutoFilter Field:=2, Criteria1:=gevraagd & "*", Operator:=xlFilterValues
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan