Anzeige
Archiv - Navigation
1560to1564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CSV-Datein Einlesen aus Ordner

CSV-Datein Einlesen aus Ordner
12.06.2017 14:04:47
Carsten
Hallo Zusammen,
ich habe eine Auswertung für eine CSV-Datei mithilfe von yummi gebastelt, jetzt bin ich dabei diese Anzuwenden und dabei fiel mir auf, dass es vlt Klug wäre wenn man dies vlt. etwas automatisiert.
So sieht der Code zum Einlesen der Datei aus. Diese wird von Hand ausgewählt Zurzeit.
Sub CSV_Einlesen()
Dim varFileToOpen As Variant
Sheets.Add after:=Sheets(Sheets.Count)
varFileToOpen = Application.GetOpenFilename("csv-Dateien,*.csv")
If varFileToOpen = False Then Exit Sub
With Workbooks.Open(varFileToOpen, Local:=True)
.Worksheets(1).UsedRange.Copy Destination:=ThisWorkbook.ActiveSheet.Cells(1)
ThisWorkbook.ActiveSheet.Range("W1") = Replace(Right(.FullName, Len(.FullName) -  _
InStrRev(.FullName, "\")), ".csv", "")
.Close SaveChanges:=False
End With
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(  _
_
13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),   _
_
Array _
(20, 1), Array(21, 1), Array(22, 1)), TrailingMinusNumbers:=True
Columns("A:A").EntireColumn.AutoFit
Range("A1").Select
Columns("S:S").Select
Selection.Copy
Columns("AK:AK").Select
ActiveSheet.Paste
ActiveSheet.Name = ThisWorkbook.ActiveSheet.Range("W1") & " " & Left(ThisWorkbook. _
ActiveSheet.Range("A2"), 11)
Call Alles
End Sub
Mein Ziel wäre es Alle Datein mit dem Namensvarianten:

abc_snapshot_22o.csv
abc_snapshot_46u.csv
abc_snapshot_10o.csv 

einzulesen.
abc_snapshot_ ist immer gleich rest variable. Denke sowas wie abc_snapshot_*.csv auf der Art könnte klappen.
Dann ist das Verzeichnis z.B. auf Laufwerk: K:\Messwerte\ kann man da vlt was machen auf der Art file to open For each abc_snapshot_*.csv in Ordner Messwerte ...

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV-Datein Einlesen aus Ordner
12.06.2017 14:39:52
Carsten
Habs erstmal so gelöst:

Sub CSV_Import()
Dim dateien, i
Dim owkb As Workbook
dateien = Application.GetOpenFilename _
("csv-Dateien (*.csv), *.csv", MultiSelect:=True)
If IsArray(dateien) Then
For i = 1 To UBound(dateien)
Workbooks.Open dateien(i), local:=True
Set owkb = ActiveWorkbook
With ThisWorkbook
ActiveSheet.UsedRange.Copy
.Sheets.Add after:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = owkb.Name
.Sheets(owkb.Name).Range("A1").PasteSpecial
ActiveSheet.Paste
End With
Application.CutCopyMode = False
owkb.Close False
Next i
End If
Call Trennen
End Sub
Public Sub Trennen()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
For y = 1 To 99999 'Durchlaufen von A1 bis A999999
n = ActiveSheet.Cells(y, 1) 'Zelleninhalt laden Cells(Reihe 1..,Spalte 1..)
If n  "" Then 'wenn Inhalt vorhanden
If InStr(1, n, ",") > 0 Then 'wenn ein Komma vorhanden ist splitten
p = Split(ActiveSheet.Cells(y, 1), ",")
For x = 0 To UBound(p) - 1 'split-Ergebnis ab A abspeichern
ActiveSheet.Cells(y, 1 + x) = p(x)
Next
Else 'ohne vorhandenes Komma direkt übernehmen
ActiveSheet.Cells(y, 1) = n
End If
End If
Next
' x = ActiveSheet.Name
'     ActiveSheet.Name = x & "_" & Left(ThisWorkbook.ActiveSheet.Range("A2"), 11)
Next
End Sub

Anzeige
AW: CSV-Datein Einlesen aus Ordner
12.06.2017 14:41:28
mmat
Hi,
so müsste das gehen.
Die ersten Zeilen deines Makros ändern sich wie folgt:
Sub CSV_Einlesen(varFileToOpen As Variant)
'    Dim varFileToOpen As Variant
Sheets.Add after:=Sheets(Sheets.Count)
'    varFileToOpen = Application.GetOpenFilename("csv-Dateien,*.csv")
'    If varFileToOpen = False Then Exit Sub
Dann kommt noch ein weiteres dazu:
Sub AlleLesen
dim p as string, s as string
p="c:\DerPfadnameWoDieDateienStehen\"
s=dir (p+"abc_snapshot_*.csv", vbnormal)
while s""
CSV_Einlesen p+s
s=dir()
wend
end sub

Anzeige
AW: CSV-Datein Einlesen aus Ordner
13.06.2017 09:50:19
Carsten
Danke für den Denkanstoß habe es jetzt so gelöst:
Sub CSV_Import()
Dim dateien, i
Dim owkb As Workbook
Dim p As String, s As String
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
.Calculation = False
.DisplayAlerts = False
End With
p = "C:\DATEIPFAD\"
s = Dir(p + "abc_snapshot_*.csv", vbNormal)
While s  ""
Workbooks.Open (p + s)
If IsArray(dateien) Then
For i = 1 To UBound(dateien)
Workbooks.Open dateien(i), local:=True
Set owkb = ActiveWorkbook
With ThisWorkbook
ActiveSheet.UsedRange.Copy
.Sheets.Add after:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = owkb.Name
.Sheets(owkb.Name).Range("A1").PasteSpecial
ActiveSheet.Paste
End With
Application.CutCopyMode = False
owkb.Close False
Next i
End If
Debug.Print p + s
For Each Sheet In Workbooks(s).Worksheets
Total = ThisWorkbook.Worksheets.Count
Workbooks(s).Worksheets(Sheet.Name).Copy _
after:=ThisWorkbook.Worksheets(Total)
Next Sheet
Workbooks(s).Close
s = Dir()
Wend
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = True
.DisplayAlerts = True
End With
End Sub

Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige