Bestimmte Zellen aus vielen Excelsheets auslesen

charmincreep

Grünschnabel
Bestimmte Zellen aus vielen Excelsheets auslesen -FAST erledigt, kleines Problem noch

Hallo zusammen,

vorneweg: Bin absoluter Newbie, was Visual Basic angeht. Dank Eures Forums habe ich mich schon weitestgehend durchgekämpft, aber ich hänge jetzt leider an einer Stelle fest und bräuchte Eure Hilfe. :(

In den letzten Tagen habe ich in Excel eine sog. Kundenscorecard geschrieben. Aus einer Dropdownliste (verknüpft mit einer Access-DB) wähle ich einen Kunden aus, gebe ein paar Zahlen ein und schon berechnet Excel mir ein Kundenscoring. So weit, so gut.
Auf Knopfdruck wird ein Makro gestartet, das eine Kopie der Datei speichert. Diese kopierte Datei heißt dann "Kundenscorecard_[Kunde].xls". Wo jetzt [Kunde] steht, steht dann der Kundenname. So kann man quasi für jeden Kunden eine eigene Datei erstellen. Die Dateien werden auch alle im selbern Verzeichnis abgelegt.

Mein Chef möchte jetzt eine Art Zusammenfassung davon haben, also eine Datei, wo dann alle Kundennamen untereinander stehen und rechts daneben ihr Scoring.

Wie kriege ich es hin, dass Excel aus allen doofen Dateien (im selben Verzeichnis), die mit "Kundenscorecard_" anfangen, die Daten rüberzieht, die jeweils in den Zellen D2 und D9 stehen und mir diese schön säuberlich untereinander ausgibt?

Welches Format diese Datei hat (Excel, Word, Txt) ist wohl recht egal bzw. wild hin- und hertransformieren dürfte ich hinkriegen.

Wie Ihr sicher merkt, bin ich recht verzweifelt. :'( Please help...

Vielen Dank im Voraus,
Eure Franzi
 
Zuletzt bearbeitet:
Als Zielformat würde ich wieder Excel nehmen. Ist für Tabellen und dergleichen einfach am besten;)

Den Code an sich würde ich wie folgend gestalten:

For Each Schleife, die alle Dateien im Ordner durchläuft
Überprüfen, ob der Anfang des Dateinamens entsprechend ist und wenn ja, dann eben die beiden Werte aus der entsprechenden Datei auslesen und in die Zusammenfassungsexcel reinschreiben.

Und wenn du dich als Newbie bezeichnest und das alles schon geschafft hast, dann solltest du auch meinen Vorschlag mit ein wenig googlen umsetzen können ;)
 
Ok, ich bin schon fast fertig:

Code:
Sub CollectData()

  Dim FS As FileSearch, wsh1 As Worksheet, i As Integer

  Set wsh1 = ThisWorkbook.Sheets(1)
  Set FS = Application.FileSearch
  
  Application.ScreenUpdating = False
  
  With FS
    .LookIn = "C:\Documents and Settings\fmuelle\My Documents\Franziska Müller-Rech\Marketing\CRM\"
    .Filename = "Kundenscorecard_*.xls"
    .SearchSubFolders = True
    
    If .Execute > 0 Then
    
      For i = 1 To .FoundFiles.Count
      Workbooks.Open .FoundFiles(i)
      Sheets(1).Select
      
          With wsh1
            .Cells(i, 1) = Range("D2")
            .Cells(i, 2) = Range("D9")
          End With
          
          ActiveWorkbook.Close , False
      Next i
      
    End If
  
  End With
  
End Sub

Jetzt habe ich nur noch ein seeeeeehr kleines Problem.

Ich hätte gerne, dass ich oben drüber noch zwei Zeilen Platz habe, sprich die gesammelten Daten erst in C1 runtergepastet werden (momentan wird ab A1 runtereingefügt). Was muß ich dafür noch ergänzen?

Bussi,
Franzi
 
Wenn du von A1 nach C1 gehst, sind das spalten;) Ich nehm aber mal an, du willst von A1 nach A3 gehen, also einfach in der Zuweisung "i+2" verwenden;)
 
Zurück