Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
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
CSV Datei importieren und verarbeiten
03.12.2017 21:13:28
Marco
Guten Abend alle,
ich benötige etwas Hilfe bei meiner Aufgabenstellung. Und zwar importiere ich Daten über ein UserForm aus CSV Dateien. Diese werden im Tabellenblatt 1 gespeichert, in Spalte H nach dem Datum absteigend aufgelistet und anschließend alle doppelten Einträge in Abhängigkeit von Spalte 1 und 4 gelöscht.
Die übrig gebliebenen Datensätze (nur die Werte) möchte ich jetzt dann automatisch in das Tabllenblatt 2 in die letzte leere Zeile der Spalte D kopieren.
Danach sollten alle Zeilen in Tabellenblatt 1 ab Zeile 6 gelöscht werden und die Filter zurück gesetzt werden.
Die letzten beiden Sachen habe ich wie folgt gelöst.
    Selection.AutoFilter
Rows("6:50000").Select
Selection.Delete Shift:=xlUp
Nicht sehr elegant aber ich weiß gerade nicht wie ich es sonst machen soll. Bei den beiden anderen Sachen brauche ich wohl möglich Hilfe.
Das wäre der ganze Code der im UserForm steht:

Option Explicit
'Modulweite Variablen deklarieren.
Dim loLetzte As Long
Private Sub Datei_einlesen_Click()
Dim varItem As Variant
varItem = File_Selection(False)
If IsArray(varItem) Then
If varItem(0) = "" Then Exit Sub
Me.TextBox1.Text = varItem(0)
End If
End Sub
Private Sub Speichern_Click()
With Sheets("Tabellenblatt1")
loLetzte = .Cells(Rows.Count, 4).End(xlUp).Row + 1
If loLetzte  0 Then
PosAt2 = InStr(PosAt1 + 1, sText, "@")
End If
If PosAt2 > 0 Then
.Cells(zeile, 1).Value = "" & Mid(sText, PosAt2 + 1)
End If
Next
'nicht benötigte Spalten löschen von rechts nach links _
benötigt werden die Spalten 1, 3, 4, 6, 8, 9, 10, 12 und 13
lastCol = .UsedRange.Column + .UsedRange.Columns.Count - 1
If lastCol > 13 Then
.Range(.Columns(14), .Columns(lastCol)).Delete
End If
.Columns(11).Delete
.Columns(7).Delete
.Columns(5).Delete
.Columns(2).Delete
'Die Spalten sollten dann in meinem Tabellenblatt in der folgenden Reihenfolge _
aufgeführt sein: 1, 3, 6, 4, 13, 8, 9, 10, 12
'Spalte 13 verschieben
.Columns(9).Cut
.Columns(5).Insert
.Columns(7).Cut
.Columns(6).Insert
'Spalte 6 verschieben
.Columns(4).Cut
.Columns(3).Insert
End With
End Function

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

Betreff
Datum
Anwender
Anzeige
AW: CSV Datei importieren und verarbeiten
03.12.2017 22:29:51
Marco
Servus alle,
ich glaube ich habe mein Problem selber gelöst. Und zwar habe ich diesen Code Teil geändert. Könnte vielleicht nochmal jemand drüber schauen.
Private Sub Speichern_Click()
With Sheets("Tabelle1")
loLetzte = .Cells(Rows.Count, 4).End(xlUp).Row + 1
If loLetzte 
Jetzt habe ich aber ein anderes Problem und zwar werden beim importieren der Daten immer die Überschriften mit importiert und das will ich nicht. Wie kann ich das denn abschalten?
AW: CSV Datei importieren und verarbeiten
04.12.2017 15:08:23
Marco
Weiß irgendjemand wie ich die CSV Dateien ohne Überschriften einlesen kann?
AW: CSV Datei importieren und verarbeiten
05.12.2017 08:27:34
Rainer
Hallo Marco,
wenn du "Querytables" zum Import benutzt, dann kannst du definieren ab welcher Zeile die Textdatei eingelesen wird.

QuerryString = "TEXT;" & Datei(i)   'kompletter Dateipfad "C:\pfad\datei.csv"
With Import.QueryTables.Add(Connection:=QuerryString, Destination:=Import.Cells(8, Sp(i)))
.AdjustColumnWidth = False
.FieldNames = True
.FillAdjacentFormulas = False
.Name = "MeasurementPosition" & (i)
.PreserveFormatting = True
.Refresh BackgroundQuery:=False
.RefreshOnFileOpen = False
.RefreshPeriod = 0
.RefreshStyle = xlOverwriteCells
.RowNumbers = False
.SaveData = False
.SavePassword = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileCommaDelimiter = True
.TextFileConsecutiveDelimiter = False
.TextFileParseType = xlDelimited
.TextFilePlatform = 437
.TextFilePromptOnRefresh = False
.TextFileSemicolonDelimiter = False
.TextFileSpaceDelimiter = False
        .TextFileStartRow = 1
.TextFileTabDelimiter = True
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileTrailingMinusNumbers = True
End With
Wichtig ist es (speziell wenn mehrfach benutzt) die "Querytables" wieder zu löschen:

Sub KILLQUERY()
' Delete the Querytables (ALL IN WORKBOOK!)
Dim cn
For Each cn In ThisWorkbook.Connections
cn.Delete
Next cn
For Each cn In ActiveSheet.QueryTables
cn.Delete
Next cn
End Sub

Gruß,
Rainer
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige