Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
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 Dateien auswählen und importieren

CSV Dateien auswählen und importieren
21.09.2017 06:34:52
Hans
Hallo,
ich möchte csv-dateien in eine tabelle einlesen. Dazu habe ich nachstehendes makro erstellt. Es funktioniert. Aber es wird immer die selbe datei ausgelesen.
Das makro sollte beim öffnen des ordners anhalten und die datei zum importieren selektieren lassen und dann wie gehabt fortfahren.
Die daten werden auch immer an die selbe stelle geschrieben: "$E$1".
Besser wäre es, wenn die selektierte zelle zum import genutzt würde.
Meine VBA kenntnisse reichen leider nicht aus um dies selbst zu ändern.
Kann mir hier jemand helfen?
vielen dank
Hans
Sub csv_auslesen()
' csv_auslesen Makro
' csv Datei auslesen und einfügen
' Tastenkombination: Strg+a
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\Hans Amarell\Desktop\Feinstaub Messungen und Infos\Feinstaub sensoren  _
1561, 1562 und 954 Auswertungen\201704 Feinstaubsensor 1561 auslesen\2017-08- _
27_sds011_sensor_1561.csv" _
, Destination:=Range("$E$1"))
.Name = "2017-08-27_sds011_sensor_1561"
.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 = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 1, 1, 9, 9, 1, 9, 9)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Dateien auswählen und importieren
21.09.2017 08:23:18
Peter(silie)
Hallo,
in folgendem, von mir geöffneten Thread ging es mehr oder weniger darum: (archiv-id) 1581334
Bei deinem Code, ist das Problem, dass du immer die gleiche Datei referenzierst.
Das passiert hier:

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\Hans Amarell\Desktop\Feinstaub Messungen und Infos\Feinstaub sensoren  _
1561, 1562 und 954 Auswertungen\201704 Feinstaubsensor 1561 auslesen\2017-08- _
27_sds011_sensor_1561.csv" _
, Destination:=Range("$E$1"))
.Name = "2017-08-27_sds011_sensor_1561

Hier der Code den ich verwendet habe, um per nutzer auswahl, die sachen zu importieren:
ACHTUNG! Bitte beachte, dass du parameter wie: .TextFileSemicolonDelimiter usw. noch auf
dich anpassen musst, ebenfalls die worksheet Variable solltest du ggf. anpassen.
Option Explicit
'   Module wide Variables
Private worksheet_ As Worksheet
Private DefaultPath As String
Private csv_ As String
'   Accessable from outside
'   Executes below Code
Public Sub Import()
DefaultPath = Environ("Userprofile") & "\Documents\"
Set worksheet_ = ThisWorkbook.Sheets(1)
worksheet_.UsedRange.Clear
'//Select File
csv_ = CsvFilePath
If csv_ = "" Then Exit Sub
'//Import the Data
AddCSV
End Sub
'   File Selection
Private Function CsvFilePath() As String
Dim FileDialog_ As FileDialog
Dim selection_ As Variant
Set FileDialog_ = Application.FileDialog(msoFileDialogFilePicker)
With FileDialog_
.Filters.Add "CSV", "*.csv", 1
.AllowMultiSelect = False
.InitialFileName = DefaultPath
If .Show = -1 Then
For Each selection_ In .SelectedItems
CsvFilePath = selection_
Next selection_
End If
End With
Set FileDialog_ = Nothing
End Function
'   Import the csv File
'   This code comes from the
'   macro recorder
Private Sub AddCSV()
With worksheet_.QueryTables.Add(Connection:="TEXT;" & csv_, _
Destination:=Range("A1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlMSDOS
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

Anzeige
AW: CSV Dateien auswählen und importieren
25.09.2017 08:21:15
Hans
Hallo Peter,
vielen dank für deine schnelle hilfe. Meine Antwort lies lange auf sich warten. Man muss erst herausfinden wie man auf dieser page antworten kann.
Deinen vorschlag habe ich in verschiedenen variationen ausprobiert. Funktionierte nicht.
Ich nutzte Excel 2010 und Win7. Könnte das vielleicht die ursache sein?
Auch bin ich in VB überhaupt nicht drin. Kommt mir alles sehr unbekannt vor.
Danke für deine hilfe.
Hans
AW: CSV Dateien auswählen und importieren
26.09.2017 09:23:29
Peter(silie)
Hallo,
was funktioniert denn nicht...?
kleiner nachtrag
21.09.2017 08:27:36
Peter(silie)
Füge am besten noch folgenden Code hinzu, um alte Datenverbindungen aus dem
worksheet zu entfernen:
'========================================================
'   Delete Connection(s) that where added by Sub: AddCsv
Private Sub ClearConnections()
Dim varConnection As Variant
For Each varConnection In ThisWorkbook.Connections
varConnection.Delete
Next varConnection
End Sub

Anzeige
AW: CSV Dateien auswählen und importieren
26.09.2017 10:43:47
Hans
Hi Peter,
wie immer: das problem sitzt vor dem PC, denk ich.
Mit den Codes komme ich nicht zurecht.
Folgendes habe ich in makro geschrieben:
Option Explicit
'========================================================
' Module wide Variables
'========================================================
Private worksheet_ As Worksheet
Private DefaultPath As String
Private csv_ As String
'========================================================
' Accessable from outside
' Executes below Code
'========================================================
Public Sub Import()
DefaultPath = Environ("Userprofile") & "\Documents\"
Set worksheet_ = ThisWorkbook.Sheets(1)
worksheet_.UsedRange.Clear
'//Select File
csv_ = CsvFilePath
If csv_ = "" Then Exit Sub
'//Import the Data
AddCSV
End Sub

'========================================================
' File Selection
'========================================================
Private Function CsvFilePath() As String
Dim FileDialog_ As FileDialog
Dim selection_ As Variant
Set FileDialog_ = Application.FileDialog(msoFileDialogFilePicker)
With FileDialog_
.Filters.Add "CSV", "*.csv", 1
.AllowMultiSelect = False
.InitialFileName = DefaultPath
If .Show = -1 Then
For Each selection_ In .SelectedItems
CsvFilePath = selection_
Next selection_
End If
End With
Set FileDialog_ = Nothing
End Function

'========================================================
' Import the csv File
' This code comes from the
' macro recorder
'========================================================
Private Sub AddCSV()
With worksheet_.QueryTables.Add(Connection:="TEXT;" & csv_, _
Destination:=Range("A1"))
.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 = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 1, 1, 9, 9, 1, 9, 9)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Columns("C:F").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

Beim start des makros werden alle "Kästchen" blau und dann tut sich nichts mehr.
Dieses forumprogramm ist "saublöd". Dauernd muß ich passwort und emailadresse eingeben und dann meckert es noch dass ich nur textfiles hochladen kann.
Das nervt. Hier bin ich im Archiv und kann nichts eingeben . Man muss woaders sich eiloggen und wieder passwort und emailadresse eingeben. Ich denke ich wechsele in eine anderes forum. Hast du einen vorschlag?
Hans
Anzeige
AW: CSV Dateien auswählen und importieren
26.09.2017 11:03:50
Peter(silie)
Hallo,
ich erkenne auf den ersten Blick keinen Fehler...
Kannst du vielleicht eine CSV-Datei von dir Hochladen?
Ich bin gelegentlich auf https://www.vb-paradise.de unterwegs.
Schwerpunkt ist dort VB.Net und VBA es gibt aber auch Hilfe zu anderen Sprachen.
AW: CSV Dateien auswählen und importieren
26.09.2017 11:20:10
Hans
Hi Peter,
Mann, hast Du eine Ausdauer..... Danke
Was was brauche ich eigentlich? Mein eigenes makro läuft. Funktioniert allerdings nur mit einem bestimmten file. In einem directory stehen mehrere files, und jeden tag kommt ein neues file hinzu.
Es sind daten von einem luftmessgerät.
Das Makro soll bei der "fileauswahl" anhalten und mir die möglichkeit geben das gewünschte file zu selekieren und dann weitermachen.
Vielleicht gibt diese Beschreibung noch eine idee.
Anzeige
AW: CSV Dateien auswählen und importieren
26.09.2017 11:27:54
Hans
HI Peter,
man kann keine csv dateien hochladen. Deshalb habe ich die endung von csv in txt geändert.
Hoffe jetzt klappts, da sollte sie zu finden sein:
https://www.herber.de/bbs/user/116533.txt
Gruss Hans
AW: CSV Dateien auswählen und importieren
26.09.2017 11:33:41
Hans
So jetzt habe ich den falschen Sensor hochgeladen. Vergiss den alten.
Die Datei 2017-08-26_sds011_sensor_1561.txt wurde erfolgreich zum Server hochgeladen und in 116535.txt umbenannt.
Hier kann der Abruf getestet werden:
https://www.herber.de/bbs/user/116535.txt
Die datei in 2017-08-26_sds011_sensor_1561.csv umbenennen.
Hans
Anzeige
AW: CSV Dateien auswählen und importieren
27.09.2017 06:00:21
Hans
Hallo Peter,
bei mir funzt es auch. Ich habe das makro immer mit den tasten "crtl+a" gestartet.
Wenn man an einem makro auch nur irgend etwas ändert, dann löscht Excel das "a". Man kann dann also nicht mehr mit den Tasten das Makro starten. Das muss man erstmal wissen! Auf diese hinterlist bin ich reingefallen. Tut mir leid.
Also in meiner Datei funktionierts.
Wenn ich aber Deine datei hier starte, dann kommt folgende meldung:
Laufzeitfehler
Der Zielbereich befindet sich nicht auf dem Arbeitsblatt, auf dem die Abfragetabelle sich befindet.
Ich lade hierzu eine docx hoch. Achtung: man kan nur eine doc hochladen, keine docx. Deshalb habe ich die endung in doc geändert. Bitte wieder in docx umbenennen.
https://www.herber.de/bbs/user/116561.doc
Diese Excel internaprobleme werde ich auch noch herausfinden.
Bei mir klappt das jetzt. In einer mappe lade ich hoch und kopiere es dann "mit der maus" in die mappe wo ich es brauche.
Wenn ich herausfinde welche mappe in sich funzt, schick ich Dir die datei.
ein bit reserve
Hans
Anzeige

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige