Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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-Import nebeneinander

csv-Import nebeneinander
01.07.2015 17:42:11
Patrick
Hallo Fachleute,
ich bin wieder dabei eine (besser gesagt hunderte und es kommen täglich neue) csv-Dateien zu importieren.
Meine Aufgabe ist es aber aus der beiliegenden csv-Datei (Spaltentrenner ;) die erste und die zwanzigste Spalte von Zeile 1 bis Zeile EOF nach Excel zu importieren. Zusätzlich soll dann noch in der Spalte C der importierte Dateiname dokumentiert werden.
Beim Import der nächsten csv-Datei soll unter die letzte Zeile eine Leerzeile und dann die nächste csv-Datei angefügt werden.
Ich habe mir Teilmakros aus dem Forum "zusammengelesen" aber das funzt nicht. Vermutlich liegt es auch an den unterschiedlichen Variablen die hier übergeben werden müssen.
Hier ist eine Beispiel-csv: https://www.herber.de/bbs/user/98584.txt
Die Formatierung in der Excel-Tabelle ist noch im Aufbau. Aber der Import der csv-Dateien würde schon sehr helfen.
Vielleicht geht das mit einer Schleife auch so, dass direkt alle csv-Dateien die sich im besagten Verzeichnis befinden importiert werden?
Danke für eure Gedanken und eure Zeit.
Patrick

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: csv-Import nebeneinander
01.07.2015 18:35:45
Michael
Hi Patrick,
hier https://www.herber.de/forum/archiv/1428to1432/t1430780.htm#1430780
wird eine sehr ähnliche Thematik diskutiert.
Bist Du sicher, daß Du die Spalte 20 willst? Ich sehe da nur 0en.
Ich würde den Import in ein Blatt "Temp" vornehmen und von dort die zwei Spalten kopieren.
Die Kernfunktion in Sepps Code findest Du im Hauptmenü unter Daten, externe Daten abrufen, Text. Weil Deine Daten anders strukturiert sind, könntest Du das mit dem Makrorekorder aufzeichnen und im Code entsprechend ersetzen.
Guck mal, ob Du damit zurechtkommst.
Schöne Grüße,
Michael

Anzeige
AW: csv-Import nebeneinander
06.07.2015 18:22:43
Patrick
Hallo MIchael,
danke für den Link. Aber so wie ich es verstehe, geht an meinem Thema vorbei. Oder ich schaffe es nicht in dem Amkro das zu erkennen, was ich ändern müsste.
Die Spalte 20 ist falsch, das sollte die Spalte 18 sein. Pardon.
In dem Beispiel wird noch nach einer "1" gesucht; ich hingegen benötige die letzte nach dem Import die letzte beschriebene Zeile, danach eine Leerzeile und dann die nächste csv-Datei mit Spalte A (Station), B(Nummer), Spalte 18 (Messwert), Dateiname aus der csv-Datei.
Hast du und ihr noch eine andere Idee?
Danke,
Patrick

Anzeige
AW: csv-Import nebeneinander
06.07.2015 22:23:55
Sepp
Hallo Patrick,
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub import_CSV()
  Dim strPath As String, strFile As String
  Dim lngNext As Long
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "D:\"
    .Title = "PDF-Export Ordnerauswahl"
    .ButtonName = "Auswahl..."
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then
      strPath = .SelectedItems(1)
      If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    End If
  End With
  
  If Len(strPath) Then
    Range("A2:B" & Rows.Count) = ""
    lngNext = 2
    strFile = Dir(strPath & "*.csv", vbNormal)
    Do While strFile <> ""
      With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strPath & strFile, Destination:=Cells(lngNext, 1))
        .Name = strFile
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
      End With
      
      lngNext = Application.Max(lngNext, Cells(Rows.Count, 1).End(xlUp).Row + 2)
      strFile = Dir
    Loop
  End If
End Sub


Gruß Sepp

Anzeige
AW: csv-Import nebeneinander
07.07.2015 08:35:39
Patrick
Hallo Sepp,
danke für dein script. Ich werde es im laufe des Tages mal testen.
Mich irritieren gerade die Zeilen "pdf-Export" und "ButtonName".
Muss ich hier erst noch einen Button in meinem Excel-Reiter anlegen?
Gruß,
Patrick

AW: csv-Import nebeneinander
07.07.2015 08:38:11
Sepp
Hallo Patrick,
das ist nur der Titel des Ordner-Dialoges und die Beschriftung des Buttons desselben.
Habe ich nur vergessen anzupassen, aber das kannst du ja selber machen.
Gruß Sepp

Anzeige
AW: csv-Import nebeneinander
07.07.2015 22:00:02
Patrick
Hallo Sepp,
okay. Verstanden. Hat auch geklappt...wo muss ich denn nun noch die Schleife einbauen, die mir den Dateinamen in die dritte Spalte schreibt? Der fehlt mir noch...
Danke!
Patrick

AW: csv-Import nebeneinander
07.07.2015 22:22:17
Sepp
Hallo Patrick,
nix Schleife.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub import_CSV()
  Dim strPath As String, strFile As String
  Dim lngNext As Long, lngStart As Long
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "D:\"
    .Title = "CSV-Import Ordnerauswahl"
    .ButtonName = "Import Starten"
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then
      strPath = .SelectedItems(1)
      If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    End If
  End With
  
  If Len(strPath) Then
    Range("A2:C" & Rows.Count) = ""
    lngNext = 2
    strFile = Dir(strPath & "*.csv", vbNormal)
    Do While strFile <> ""
      With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strPath & strFile, Destination:=Cells(lngNext, 1))
        .Name = strFile
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
      End With
      lngStart = lngNext
      lngNext = Application.Max(lngNext, Cells(Rows.Count, 1).End(xlUp).Row)
      Range(Cells(lngStart, 3), Cells(lngNext, 3)) = strFile
      lngNext = lngNext + 2
      strFile = Dir
    Loop
  End If
End Sub


Gruß Sepp

Anzeige
AW: csv-Import nebeneinander
08.07.2015 06:54:30
Patrick
Morgen Sepp,
herzlichen Dank! Super! Funktioniert!
Jetzt "trau" ich mich nicht weiter zu fragen, jetzt muss ich auch mal selber weitermachen. Es bleibt eine beeindruckende Sache: Makro und VBA....aber es will noch nicht so ganz in meinen Kopf rein.
Danke ..und bis zum nächsten Mal ;-)
Patrick

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige