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

Gegevens ophalen uit een onbekend aantal bestanden

Status
Niet open voor verdere reacties.

MarcMangelschots

Gebruiker
Lid geworden
22 mei 2012
Berichten
34
Dag Excellers,

Ik probeer in een nieuw exceldocument een overzicht te geven van gegevens die uit andere excelbestanden afkomstig zijn.
Eén probleem is dat ik vooraf niet weet over hoeveel bestanden het gaat.
Alle bestanden staan in één map, de gegevens staan telkens in hetzelfde tabblad, en steeds in de cellen B32 tot C44. d
Dus stel even dat ik volgende bestanden heb file1.xlsx, file2.xlsx, file3.xlsx
Dan zoek ik een procedure die in het nieuwe bestand:
Op A1 de naam van het bestand file1.xlsx plaatst
De gegevens uit file1.xlsx van cel B32 tot C44 plaatst in de cellen A2 tot B14
Op D1 de naam van het bestand file2.xlsx plaatst
De gegevens uit file2.xlsx van cel B32 tot C44 plaatst in de cellen D2 tot D14
Op G1 de naam van het bestand file3.xlsx plaatst
De gegevens uit file3.xlsx van cel B32 tot C44 plaatst in de cellen G2 tot G14
enzoverder afhankelijk van het aantal bestanden in de map.

anyone?

Alvast bedankt voor de moeite,
Marc
 
Test het maar eens Marc.

Er van uitgaande dat de bestanden in dezelfde map staan als het bestand waar het naar toe geschreven wordt.
Alle gegevens komen van het eerste blad van de andere bestanden (activeworkbook.sheets(1) in de code).

Code:
Sub hsv()
Dim bestandopen As String, y As Long
With Application
   .DisplayAlerts = False
   .ScreenUpdating = False
 bestandopen = Dir(ThisWorkbook.Path & "\*")
    Do Until bestandopen = ""
     If bestandopen <> ThisWorkbook.Name Then
        Workbooks.Open ThisWorkbook.Path & "\" & bestandopen
           With ThisWorkbook.Sheets(1)
             .Cells(1, y + 1) = ActiveWorkbook.Name
             .Cells(2, y + 1).Resize(13, 2) = ActiveWorkbook.Sheets(1).Range("B32:B44").Value
           End With
        Workbooks(bestandopen).Close False
        y = y + 3
      End If
    bestandopen = Dir
  Loop
    .DisplayAlerts = True
  End With
End Sub
 
Nee, doe ik bewust niet meer na enkele tests.
Het beeld flikkert toch wel weer als de code is beëindigd.
 
Dankjewel Harry voor de snelle en degelijke hulp!
:thumb:

Als je nog een tip hebt over sites of boeken om VBA te leren, altijd welkom.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan