Excel Steeds een ander bestand aanroepen in een macro lus

Status
Niet open voor verdere reacties.

duco243

Gebruiker
Lid geworden
8 jul 2009
Berichten
67
Hallo,

Ik zit met een moeilijk vraagstuk:
Ik heb een masterbestand met een macro die een ander bestand (File A) opent en daar een aantal handelingen in uitvoert.
Nadat dit gebeurd is sluit File A en moet een volgend bestand (File B) dezelfde handelingen ondergaan.
Ik heb 10 van zulke bestanden.

Ik kan de macro 10x kopieeren maar het moet ook met een lus kunnen lijkt me.

Kan iemand mij op weg helpen?

Sub macro1()

Dim A

For A = 1 To 10 '<-----------aantal files



File = Path1 & Filename1 '<-----dit is File A en moet in de 2de lus File B worden

Set wb = Workbooks.Open(File)
'allerlei handelingen, opslaan en sluiten

Next A

End sub
 
Dank je Marco, ik ben deze in m'n zoektocht niet tegengekomen.
De vraag komt wel overeen met die van mij.
Ik ga het antwoord testen
 
Dit werkt prima:

Sub Macro1()
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With CreateObject("scripting.filesystemobject").GetFolder("C:\Users\duco\Documents\Test Macrolus\Files")
For Each fl In .Files
Workbooks.Open fl

'wat nu volgt wordt in elk bestand dat in bovenstaande map staat uitgevoerd
Range("B1").Value = Range("A1").Value
Application.CutCopyMode = False
Range("A1").Select
ActiveWorkbook.Save
ActiveWorkbook.Close , False
'bestand wordt gesloten en het volgende bestand wordt geopend
Next
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

Bedankt voor de hulp

gr Duco
 
Maar het is geen prima code.

En gebruik svp code tags !

Code:
Sub M_snb()
  for each it in CreateObject("scripting.filesystemobject").GetFolder("C:\Users\duco\Documents\Test Macrolus\Files").files
    with getobject(it)
       .sheets(1).cells(1,2) = .sheets(1).cells(1).Value
       .Close -1
    end with
  Next
End Sub
 
THX snb voor de snellere versie

Ik heb deze vraag weer even opnieuw geopend vanwege het volgende:

Uit de map C:\Users\duco\Documents\Test Macrolus\Files worden via de code alle bestanden opgehaald, omdat deze verschillende namen hebben noem ik ze even "X".
Stel dat de macro geactiveerd wordt vanuit bestand "Filename1" en er data uit het 1ste geopende X bestand gekopieerd moet worden naar Filename1 dan moet in de code Filename1 aangeroepen worden.
Nu vraag ik me af wat de code is om weer in het reeds geopende X bestand te komen?

Bij de vraagtekens moet de aanroepcode komen:
Code:
Sub M_snb()
 
Dim Filename1 As String
    
    Filename1 = "Master2.xlsm" '<-----bestand met deze code


 for each it in CreateObject("scripting.filesystemobject").GetFolder("C:\Users\duco\Documents\Test Macrolus\Files").files
    with getobject(it)
'ik ga weer even terug naar de recorder versie van het kopieeren (is alleen maar voor in dit voorbeeld)
Range("A1").Select
Selection.Copy
Windows(Filename1).Activate
 Sheets("Filter").Select
Range("A1").Select
    ActiveSheet.Paste
 '???? <----hier het onbekende bestand weer aanroepen (is al geopend)
    ActiveWorkbook.Close SaveChanges:=False
       
    end with
  Next
End Sub
 
zet meerdere gegevens altijd in een variabele, zodat ze in 1 keer weggeschreven kunnen worden
Code:
Sub M_snb()
  for each it in CreateObject("scripting.filesystemobject").GetFolder("C:\Users\duco\Documents\Test Macrolus\Files").files
    with getobject(it)
       .sheets(1).cells(1,2) = .sheets(1).cells(1).Value
        c00=c00 & "_" & .sheet(1).cells(1).value
       .Close -1
    end with
  Next
  thisworkbook.sheets(1).cells(1)=c00
End Sub
 
Hallo snb,

Ik snap er niets meer van, de bestanden in de files-map worden wel geopend en er wordt een bewerking in uitgevoerd, worden vervolgens opgeslagen en worden daarna onzichtbaar, dat is nou ook niet de bedoeling. De snelheid zit er wel in maar dat is van latere zorg.
Eerst maar eens de code werkend zien te krijgen.

Even terug naar af en dat copy-gebeuren vergeten want dat is maar om het kort te houden.

Dit is de bedoeling:

Master2.xlsm is het actieve bestand met de code (macro)
De code opent A004.xls (de naam is echter niet bekend, het kan ook A123.xls zijn)
Vanuit A004.xls worden gegevens naar Master2.xlsm tabblad "Filter" gekopieerd
A004.xls wordt gesloten zonder opslaan
Het volgende bestand uit de Files-map wordt geopent en bovenstaande herhaalt zich totdat alle in de map Files aanwezige bestanden zijn uitgelezen.

De vraag is wat de code is om het geopende bestand (met de onbekende naam) weer actief te maken

Code:
Dim Filename1 As String
    
    Filename1 = "Master2.xlsm" 

 for each it in CreateObject("scripting.filesystemobject").GetFolder("C:\Users\duco\Documents\Test Macrolus\Files").files
    with getobject(it)

Range("A1").Select
Selection.Copy
Windows(Filename1).Activate
 Sheets("Filter").Select
Range("A1").Select
    ActiveSheet.Paste
 '???? <----hier het onbekende bestand weer aanroepen (is al geopend) of direct sluiten zonder opslaan
    ActiveWorkbook.Close SaveChanges:=False

Ik dacht aan zoiets:

with getobject(it)
.....
.....
Windows(it),Activate

maar dat werkt niet.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan