Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
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

Datenimport von csv-Dateien

Datenimport von csv-Dateien
22.02.2017 09:04:35
csv-Dateien
Hallo liebe Excel-Gemeinde,
ich habe wieder mal Fragen über Fragen rund um das Thema csv-Import. Ich habe zwei Problemfälle.
(1) Ich möchtze in eine bestehende Arbeitsmappe eine csv-Datei importieren. Wenn ich jetzt manuell aus meiner geöffneten Arbeitsmappe den Aufruf Datei....öffnen...activity.csv aufrufe, dann öffnet sich (wie auch gewünscht) ein extra fenster innerhalb der Mappe und die csv-Daten werden in Spalte A angezeigt. Mittels Funktion "Text in Spalten" kann ich das ganze dann umformatieren. So weit so gut.
Das ganze möchte ich jetzt via VBA abfrühstücken. Hierzu verwende ich folgenden code...
sPath = Sheets("overview").Range("q2").Value 'hier steht der Dateipfad
cDir = Dir(sPath & "*.csv"
Workbooks.Open (sPath & cDir)
Das ganze klappt im Prinzip auch. Aaaaber! Die angezeigten Daten sind schon fix und fertig auf die Spalten aufgeteilt. D.h. die Funktion "Text in Spalaten" wurde im Hintergrund bereits automatisch durchgeführt ohne dass ich dies angewiesen habe?
(2) Besagte csv-Datei enthält eine Spalte mit Zeitangaben (9:11 / 1:01:29 /58:44 /...). Dabei bedeuten: 9:11 = mm:ss / 1:01:29 = hh:mm:ss / usw. Problem ist nun beim Import, dass diese Spalte als "Standard" importiert wird. Als Ergebnis erhalte ich für 9:11 dann aber 09:11:00, was ja 9Std 11min entspricht !! Wie bekomme ich dieses Problem gelöst?
Puh. Ich hoffe das war nicht Zuviel auf einmal? Würde mich freuen, wenn ihr den ein oder anderen Lösungsansatz hättet.
Danke und Grüße, Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport von csv-Dateien
22.02.2017 09:09:36
csv-Dateien
Hallo,
meine Empfehlung lautet: Power Query. Damit kannst Du auch sehr komplexe Datenumwandlungen durchführen. Zudem kann man die Daten leicht aktualisieren, indem man die Datei überschreibt und die Abfrage aktualisiert.
Gruß
Steuerfuzzi
AW: Datenimport von csv-Dateien
22.02.2017 09:12:41
csv-Dateien
Hallo hockmock,
oder einfach mal den Import mit dem Rekorder aufzeichnen und ggf. an bestimmten Stellen abändern.
VG Anton
AW: Datenimport von csv-Dateien
22.02.2017 09:19:53
csv-Dateien
Hallo an euch beide,
danke zunächst ein mal für die schnellen Antworten.
@Anton: das habe ich bereits gemacht. Das komische daran ist; der manuelle Weg klappt (=Daten werden in Spalte A angezeigt). Der Weg per aufgezeichneten VBA-Code führt dazu, dass die Spalten bereits einzeln aufgezeigt werden. Sprich: Die "Text-in-Spalten" Nummer wird automatisch von Excel im Hintergrund durchgeführt. Sehr komisch das ist!!
@Steuerfuzzi: mit Power query hab ich noch nie gearbeitet. Das Problem ist auch, dass in meinem Ordner mehrere csv-Dateien mit unterschiedlichen Namen liegen können. Das löse ich via do...while...Loop
sPath = Sheets("overview").Range("q2").Value
cDir = Dir(sPath & "*.csv")
If cDir = "" Then
MsgBox ("Die Pfadangabe ist falsch oder im angegebenen Pfad ist keine csv-Datei hinterlegt!")
Else
ActiveWorkbook.Worksheets("Tabelle1").Select
'****** csv-Dateien aus Ordner auslesen und importieren ****
Do While cDir ""
Set wks1 = ActiveWorkbook.Worksheets("Tabelle1")
Workbooks.Open (sPath & cDir)
Range("A3:AF23").Copy Destination:=wks1.Range("A65536").End(xlUp).Offset(1, 0)
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
cDir = Dir
Loop
Anzeige
AW: Datenimport von csv-Dateien
22.02.2017 09:27:09
csv-Dateien
Alle Dateien in einem Ordner einzulesen ist idR auch kein Problem. Schau mal hier:
https://thehosblog.com/2014/05/25/excel-power-query-dateien-importieren-csv-und-txt/
http://www.excel-ist-sexy.de/textdateien-importieren-2/
Google wird Dir sicher noch mehr Infos liefern. Wenn Du häufiger Daten einliest, dann lohnt es sich, sich mit PQ auseinander zu setzen. Es gibt einige kostenlose Kurse im Netz.
AW: Datenimport von csv-Dateien
22.02.2017 09:28:05
csv-Dateien
Hallo hockmock,
ok, ich hatte selbiges Problem auch schon mal. Komischerweise hat es sich irgendwann aus heiterem Himmel selbst gelöst. Eine weitere Möglichkeit wäre die CSV erstmal in einen Array zu überführen und dann auszugeben.
VG Anton
Anzeige
AW: Datenimport von csv-Dateien
22.02.2017 09:33:00
csv-Dateien
hallo nochmals,
@Anton: Ich kann in VBA mittlerweile ganz gut improvisieren - aber ich würde mich nicht als Profi bezeichnen. Deshalb entschuldige die Frage... wie mache ich das konkret?
@Steuerfuzzi: Deinen Link werde ich mir ansehen. Ich hoffe, dass ich hier die Systemvoraussetzungen mitbringe (Office 2010 Standard?)
AW: Datenimport von csv-Dateien
22.02.2017 09:42:37
csv-Dateien
Hi hockmock,
probier's mal mit dem Makro was Zwenn geschrieben https://www.herber.de/cgi-bin/callthread.pl?index=1493668#1493717
Einfach die xlsm File runterladen und entsprechend für Deinen Fall anpassen.
Hoffe, dass hilft Dir etwas weiter.
VG Anton
Anzeige
AW: Datenimport von csv-Dateien
22.02.2017 09:50:46
csv-Dateien
Ja, ab xl2010 kann man Power Query verwenden. PQ ist ab xl2013 bereits in Excel integriert, bei xl2010 musst Du das Add-In bei MS herunterladen und installieren. Geht aber ruck zuck und unproblematisch.
AW: Datenimport von csv-Dateien
22.02.2017 11:09:30
csv-Dateien
Hallo nochmals an alle,
nach ein wenig "rumtüftelei" habe ich jetzt zumindest für Problem Nr. 1 eine Lösung gefunden. Mit nachfolgenden code werden jetzt alle meine csv-Dateien aus definiertem Ordner DIREKT in meine Arbeitsmappe geschrieben.
Leider habe ich aber immer noch Problem Nr. (2). Konkret: Es gibt eine Spalte mit Zeitangaben (9:11 / 1:01:29 /58:44 /...). Dabei bedeuten: 9:11 = mm:ss / 1:01:29 = hh:mm:ss / usw. Problem ist nun beim Import, dass diese Spalte als "Standard" importiert wird. Als Ergebnis erhalte ich für 9:11 dann aber 09:11:00, was ja 9Std 11min entspricht !! Wie bekomme ich dieses Problem gelöst?
Hat hierzu jemand eine Idee?
Grüße, Andreas
Sub CSV_Import()
Dim strPfad As String
Dim lngLastRow As Long
Dim myFileSystemObject, myFiles
strPfad = "\\n-ad.n-ergie\daten\home\home9\KAUFM01\Sync\Desktop\Neuer Ordner\"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
For Each myFiles In myFileSystemObject.GetFolder(strPfad).Files
If InStr(UCase(myFiles), ".CSV") Then
lngLastRow = ActiveSheet.Cells(65535, 2).End(xlUp).Row
'ActiveSheet.Cells(lngLastRow + 1, 1) = myFiles
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & myFiles, Destination:=Range(Cells(lngLastRow + 2, 1), Cells(lngLastRow +  _
2, 1)))
.Name = myFiles
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
Next myFiles
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige