# Auslesen "*.csv" in Ordner/Subfolder, Info nicht immer in selben Zellen, jedoch STan



## twist20 (25. April 2014)

*Aloah Zusammen!*

ich Versuche nun schon seit einiger Zeit ein Makro zu schreiben, was leider jedoch nicht so Funktioniert wie ich es möchte, da ich mich hier nicht gerade gut auskenne ;-)  Hierbei geht es darum etliche Ergebnisse auszulesen um diese anschließend auswerten zu können. Wäre nett wenn mir jemand von euch helfen könnte!

Grundsätzlich gibt es hierbei in jedem Ordner 8 .csv Dateien mit jeweils 10 Auszulesenden Infos, welche jedoch an unterschiedlichen Positionen stehen. 6 davon haben die Info an Pos. 1 (A40-A45 und A50-A55) und 2 Dateien an Pos. 2 (A85-A90 und A95-A100)
Grundsätzlich haben ALLE Auszulesenden Daten die Gemeinsamkeit, dass die Auszulesende Info in den Zellen immer mit dem Text  "Position" beginnt!
Alle Dateien haben spezifischen Namen (Datum_Name1,Name2,....) die in allen Ordnern wiederkehren!


Es sollte folgende Eigenschaften aufweisen:

- Auslesen von *.csv Dateien
- Diese Dateien befinden sich in einem Ordner mit etlichen Subfolders (in 3 Ebenen)
- Die Auszulesenden Daten stehen an 2 verschiedenen Positionen

Diese Infos sollten dann nach Möglichkeit in eine neue Excel Tabelle eingetragen werden, z.B. alle Werte untereinander von A1-L1

Ich habe versucht mich einzulesen - und auch stundenlanges durchklicken durch etliche Foren usw. brachte mich jedoch nicht weiter und Letztendlich zu euch hier her ;-)
Wäre also sehr nett wenn mir jemand von euch helfen könnte!!

Grüße


----------



## Yaslaw (25. April 2014)

Jepp, können wir.
Mein Tipp:
-Mittels FileSystemObject (FSO) die Dateien finden
-Datei mit Excel öffnen http://stackoverflow.com/questions/12867926/excel-vba-process-csv-string-into-array
- Spalte A durchiterieren und auf 'Positio' prüfen
- Wert aus Spalte B? auslesen
Sheet schliessen und nächste Datei verwursteln


----------



## twist20 (25. April 2014)

Danke erst mal für die schnelle Antwort!

Könntest du mir hierzu ein konkretes Beispiel liefern? Verstehe gerade noch nicht wie ich das ganze umsetzen könnte.

Gruß


----------



## Yaslaw (25. April 2014)

Ohne zu testen einfach mal aus dem Kopf hingeklatscht.

Menü Tools->Referenz->Microsoft Scripting Runtime

```
Dim fso     As New FileSystemObject
    Dim csv     As File
    Dim stream  As TextStream
    Dim wsCsv   As Worksheet
    
    For Each csv In fso.GetFolder("C:\MyPath").Files
        If csv.Name = "gesuchtes File.csv" Then
            Set strream = csv.OpenAsTextStream
            Set wsCsv = ActiveWorkbook.Worksheets.Add
            wsCsv.Cells(1, 1) = stream.ReadAll
            wsCsv.Cells(1, 1).TextToColumns Destination:=Cells(1, 1), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False
            '//TODO Geöffnetes CSV durchsuchen
            stream.Close
            wsCsv.Delete
        End If
    
    Next csv
    
    Set stream = Nothing
    Set csv = Nothing
    Set fso = Nothing
```


----------



## twist20 (25. April 2014)

Das funktioniert bei mir so leider nicht. Zeile 1: Benutzerdefinierter Typ nicht definiert. Sry aber ich kenn mich in VBA wirklich nicht aus


----------



## Yaslaw (25. April 2014)

Yaslaw hat gesagt.:


> Menü Tools->Referenz->Microsoft Scripting Runtime



Und wenn du eine fertige Lösung willst, verschieben wirs zu den Jobangeboten.


----------



## twist20 (25. April 2014)

ich wollte hier keinesfalls eine fertige Lösung, lediglich ein Grundgerüst dass ich dann an meine Forderungen anpassen kann und da ich mich leider in VBA nicht wirklich auskenne, wäre es nett wenn mir jemand weiterhelfen könnte!


----------



## Yaslaw (25. April 2014)

Ich habe dir 2 mal geschrieben wie man das FileSystemObject einbindet. Du hast es 2 mal ignoriert (nicht mal nachgefragt was damit gemeint ist).
Ich habe dir einen fast fertigen Code (ein Grundgerüst) als Beispiel geliefert.
Wenn ich noch eine Zeile Code mehr liefere, ist der Code fertig.

Wenn du damit nicht weiterkommst - kein Problem. Aber frag gezielt nach und nicht einfach ein Hilferuf in die weite Welt: "Helft mir, hab keine Ahnung mit was, aber helft mir"

Wenn du noch gar keine Ahnung von VBA hast, dann lerne Grundlagen. Ich bin kein Lehrer. Ich bringe dir die Grundlagen nicht bei. 
Dazu gibt es mehrere Tonnen bedrucktes Papier in Form von Bücher, mehrere Megabytes online-Bücher, diverse Tutorials. Wahrscheinlich sogar youtube-Filme.

Sorry für die harten Worte, von meiner Seite ist das Thema erledigt.
Ev. hat noch jemand anderes eine andere Idee um dir zu helfen. Ich nicht (aber ich bin nicht das Forum!)


----------

