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

bestanden samenvoegen ( eenzefde blad) telkens ander Tabblad

Status
Niet open voor verdere reacties.

grema

Gebruiker
Lid geworden
2 dec 2006
Berichten
659
Goede avond,

Heb een vraagje voor jullie.
Ik ben op zoek naar een code om uit verschillende excel bestanden met eenzelfde opmaak die voor de gemakkelijkheid uit eenzelfde weggeschreven zijn, de gegevens op te halen en te plaatsen in een hoofdmap.
Eigenlijk komen al de gegevens binnen van m'n produkten verdeeld over verschillende excel bestanden ( anders bestand te groot om in 1 keer binnen te halen en voor excel).

Deze gegevens uit de verschillende bestanden elk met hub eigen bestands-naam ;moeten dan op 1 werkblad met verschillende Tabbladden komen te staan.

Vb Tabblad 2 van Werkblad = gegevens uit bestand Lev 1 tabblad1
Tabblad 3 " = " " Lev 2 tabblad1

Voor zover ik al gelezen heb moeten de verschillende bestanden openstaan om de geevens te kunnen inlezen. Dit is niet erg praktisch daar het over zo'n 50 leveranciers kan gaan ( het aantal artiekels per Lev kan per update verschillen.

Bestaat er een code om alles in 1 maal in te lezen?

Wie kan me een aanzet geven ??

thx

grema
 
Hier is alvast het geraamte van de code: www.ozgrid.com/VBA/loop-through.htm

Alle bestanden die je moet behandelen, komen in 1 folder terecht. En daar laat je de code op los eens dat ze geschreven is. Maar hier is dus al een degelijke aanzet.

Wigi
 
wigi

deze code gaat nog ver boven men petje hoor.( ben nog steeds maar een leek; niet zon "prof " als jij hoor )

Kan je iets meer uitleg geven?? Of zet ik er even fictief vb bij ??

grema
 
Daar waar in de code staat:

Code:
'DO YOUR CODE HERE

moet jij je code zetten.

De variabele wbResults

is de variabele die gebruikt wordt voor de bestanden. Er wordt een lus gemaakt doorheen alle bestanden in een map. Het bestand waar je mee bezig bent op een bepaald moment (1 van de pakweg 50 dus), spreek je aan met wbResults.

Bv. als je dit gebruikt:

Code:
MsgBox wbResults.Name

zal je per bestand 1 message box krijgen met de naam van dat bepaalde bestand.

Ga met deze info nu verder naar de sheets en denk na over hoe je VBA kan zeggen in welke sheet die moet zijn.

Wigi
 
Wigi,

alvast dank voor vandaag.

Kijk en pruts morgen even verder.

Tot dan.

Ps : Fijne Kerst voor alle forum gebruikers.


grema
 
De link van wigi is inderdaad een mooie startpositie. Hij maakt wel gebruik van Appication.Filesearch welke in Excel 2007 niet meer ondersteund wordt. Dus moest je applicatie ook moeten werken onder versie 2007 (nu of in de toekomst) is wat extra voorzichtigheid aangewezen. Nu er bestaat ook code om de FileSearch mogelijkheden binnen Excel 2007 te kunnen gebruiken, dus het belangrijkste is dat je deze opmerking even in het achterhoofd houd.
 
Code:
  Nu er bestaat ook code om de FileSearch mogelijkheden binnen Excel 2007 te kunnen gebruiken


Dus dit is een andere code ; die al dan niet draait op voorgaande codes vb excel 2000 en 2003.

Zoek binnenkort over te schakelen. Welk advies kan je me dan geven en welke code is dit dan.


thx

grema
 
Hmmm, die is inderdaad verschwunden :confused:

Ik zal als moderator op Ozgrid eens proberen zien waar die naartoe gegaan is.

Wigi
 
heb de code van http://excel2007tips.blogspot.com/20...h-in-2007.html
gecopieerd

In volgende in blauw aangegeven = is dit juist of zie ik dit fout ?????

Code:
 Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String

sPath = "C:\Documents and Settings\Roy Cox\My Documents\" 'location of files
ChDir sPath [COLOR="Blue"]'= plaats van basisbestand waar in te voegen ???[/COLOR]
sFil = Dir("*.xlsx") 'change or add formats    "  [COLOR="blue"] ? = in te voegen bestanden ??[/COLOR]
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped through Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file

' do something
oWbk.Close True 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub
 
bijkomend vraagje ;

Code:
 sFil = Dir("*.xlsx")
betekend ????
 
Code:
 Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String

sPath = "C:\Documents and Settings\Roy Cox\My Documents\" 'location of files
ChDir sPath [COLOR="Red"]'= de folder met mappen die gedaan moet worden[/COLOR]
sFil = Dir("*.xlsx") 'change or add formats    "  [COLOR="red"] ? = enkel xlsx bestanden in die folder mogen in de code gedaan worden. xlsx is een Excel bestand in versie 2007. Verander dit tot .xls[/COLOR]
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped through Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file

' do something
oWbk.Close True 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub
 
bijkomend vraagje ;

Code:
 sFil = Dir("*.xlsx")
betekend ????

Dit betekenttttt dat xlsx bestanden gaan behandeld worden in de folder die je zelf erboven gekozen hebt. Alle bestanden in die folder, 1 voor 1, tot ze allemaal gedaan zijn.

Wigi
 
wigi & collegas


Een fijne Kert voor allen .


In bijlage een probeersel . Lukt toch nog niet echt.

Dus hierbij weer eens een noodkreet ( amai zonder jullie zou het maar erg zijn , hoor)

Graag even iemand die nog even kan bijspringen.

grema
 

Bijlagen

Hier is de code voor een uitgewerkt voorbeeld:

Code:
Sub Open_All_Files()
    Dim oWbk As Workbook
    Dim sFil As String
    Dim sPath As String

    sPath = "C:\zzWigi\Testmap" '"C:\Users\Mark\Desktop\Testmap\Basis"    'location of files
    ChDir sPath    '= de folder met mappen die gedaan moet worden
    sFil = Dir("*.xls")    'change or add formats    "   ? = enkel xls bestanden in die folder mogen in de code gedaan worden. xlsx is een Excel bestand in versie 2007. Verander dit tot .xls
    Do While sFil <> ""    'will start LOOP until all files in folder sPath have been looped through
        
        On Error GoTo here
        Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file

        ' do something

        'Private Sub CommandButton2_Click() 'MOET WEG
        
        MsgBox oWbk.Name
        
        'Range("Invoegblad1!$A4:$A500").Select
        'CopySheets("TestmapBasis\Blad1").Range ("A4")
        'Range("Invoegblad2!$A4:$A500").Select
        'CopySheets("TestmapBasis\Blad2").Range ("A4")
        
        'End Sub 'MOET WEG

        oWbk.Close False    'close the workbook, not saving changes
        
here:
        sFil = Dir
        
    Loop    ' End of LOOP
End Sub

Wigi
 
wigi

een en ander getest ; maar draait nog niet.

Code:
 Sub Open_All_Files()
    Dim oWbk As Workbook
    Dim sFil As String
    Dim sPath As String

    sPath = "C:\Users\Mark\Desktop\Testmap"    'location of files
    ChDir sPath    '= de folder met mappen die gedaan moet worden
    sFil = Dir("Invoegblad1;Invoegblad2.xls")    'change or add formats    "   ? = enkel xls bestanden in die folder mogen in de code gedaan worden. xlsx is een Excel bestand in versie 2007. Verander dit tot .xls
    Do While sFil <> ""    'will start LOOP until all files in folder sPath have been looped through
        
        On Error GoTo here
        Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file

        ' do something

        'Private Sub CommandButton2_Click() 'MOET WEG
        
        MsgBox oWbk.Name
        
        'Range("Invoegblad1!$A4:$A500").Select                [COLOR="Blue"]Waar bepaal je de dan de invoegpositie ???[/COLOR]        'CopySheets("TestmapBasis\Blad1").Range ("A4")
        'Range("Invoegblad2!$A4:$A500").Select
        'CopySheets("TestmapBasis\Blad2").Range ("A4")
        
        'End Sub 'MOET WEG

        oWbk.Close False    'close the workbook, not saving changes
        
here:
        sFil = Dir
        
    Loop    ' End of LOOP
End Sub

Wanneer ik alleen invoegblad1 ingeef dan selecteert i alleen invoegblad 1 maar voegt niet in; wanneer ik beide invoegbladen ingeef gebeurt er niets ??
 
wigi


reeds geruime tijd aan het prutsen.

geraak tot aan invoegblad 1 en msg box invoegblad1.xls OK

Dan loopt het weer vast ttz :

Code:
 Ga met deze info nu verder naar de sheets
Code:
  hoe je VBA kan zeggen in welke sheet die moet zijn.

ga er dus vanuit dat ik zoals in vorige al aangaf de inhoud wil krijgen op het juiste blad.

Jij zette m'n code met " ' " = niet de goede .

Geraak er niet uit ??

ook niet met ; insert ... paste...copy of copyselection ? !


Wat kan het dan nog zijn ???
 
Zie eerst dat je de lus doorheen de bestanden van die folder goed krijgt.

Dat is het nut van die simpele msgbox. Kijken of je alle bestandsnamen te zien krijgt.

Als dat niet lukt moet je ook niet verder gaan met de code om te kopiëren.

Wigi
 
wigi


probleem met de lus .met onderstaande code lukt het niet.

Code:
  sPath = "C:\Users\Mark\Desktop\Testmap"     'location of files
    ChDir sPath    '= de folder met mappen die gedaan moet worden
    sFil = Dir("Invoegblad1.xls") & ("Invoegblad2.xls")


Iniden ik enkel
Code:
 sPath = "C:\Users\Mark\Desktop\Testmap"     'location of files
    ChDir sPath    '= de folder met mappen die gedaan moet worden
    sFil = Dir("Invoegblad1.xls")

gebruik zie ik enkel de msgbox van invoegblad1 verschijnen.

Verder geraak ik niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan