Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1812to1816
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 importieren und in Mappe bringen

CSV importieren und in Mappe bringen
14.02.2021 17:15:45
Jürgen
Hallo,
brauche mal wieder Unterstützung bei der Umsetzung eines "Teilprojekts".
Hab mein Glück bereits hier: https://www.tutorials.de/threads/neues-vba-projekt-mit-mehreren-optionen.409812/ Versucht aber bisher gabs dort noch keine Antwort, deswegen wollte ich mal hier nach Hilfe suchen.
Unter dem Link findet ihr übrigens die Idee zum fertigen Projekt.
Moment hänge ich daran fest eine CSV Datei per Button zu "öffnen/einzulesen" und diese dann an eine neue Arbeitsmappe weiterzugeben. Kurz zum Grund dafür, ich muss täglich mehrere CSV Dateien die ich per Mail bekomme abspeichern, bearbeiten und die Zellen 4-61 löschen, die dritte Spalte ich den sich Zahlen befinden das Format anpassen und Abschließend wieder als CSV speichern.
Das Einlesen der CSV in der von mir gewünchten Formatierung klappt bereits bestens, ich finde halt nur nicht raus wie ich den Code anpassen muss damit das ganze ich eine neue Mappe geht.

Option Explicit
Private worksheet_ As Worksheet
Private DefaultPath As String
Private csv_ As String
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
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
Sub qry()  'QueryTable löschen
Dim qry As QueryTable
Dim wks As Worksheet
For Each wks In Workbooks("Mappe1.xls").Worksheets
For Each qry In wks.QueryTables
qry.Delete
Next 'qry
Next 'wks
End Sub
Private Sub AddCSV()
With worksheet_.QueryTables.Add(Connection:="TEXT;" & csv_, _
Destination:=Range("A1"))
.Name = ""       .FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.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, 1, 2, 2, 2, 2, 2, 2, 2, 2)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveSheet.QueryTables(1).Delete
End Sub
Der Code klappt bestens und bringt das ganze auch direkt in das Format das brauche.
Nun habe mehrere Idee und Versuche unternomme um das ganze in eine neue Mappe zu kriegen.
Diese soll, sobald es dann funktioniert, noch Automatisch nach dem Importieren unter Vorgabe eines Dateinames mit "Rückfrage" gespeichert und dann geschlossen werden. Aber daran werde ich mich später Versuchen.
Hier mal mein letzten Versuche:

'1.
Private Sub AddCSV()
Dim origWb As Workbook
origWb = Workbook.Name
Dim newWb As Workbook
newWb = Workbooks.Name
With Workbook(newWb).worksheet_.QueryTables.Add(Connection:="TEXT;" & csv_,
Destination:=Workbook(newWb).Sheets(newWks).Range("A1"))
.Name = ""
'2.
Private Sub AddCSV()
Dim origWb As Workbook
Set origWb = Workbook.Name
Dim newWb As Workbook
Set newWb = Workbook.Name
newWb = Workbook.Activate
Dim newWks As Worksheet
With Aktiveworksheet(newWb)_.QueryTables.Add(Connection:="TEXT;" & csv_,
Destination:=ActiveWorkbook.Sheets(newWks).Range("A1"))
.Name = ""
Wäre schön wenn mich hier jemand auf den richtigen Weg bringen kann...
Schönen Sonntag noch
VG

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

Betreff
Datum
Anwender
Anzeige
AW: CSV importieren und in Mappe bringen
14.02.2021 18:09:35
onur
Dein Code ist ja schön und gut, aber wie sollen wir ihn testen ohne die Datei und die csv dazu?
AW: CSV importieren und in Mappe bringen
15.02.2021 02:21:55
Jürgen
Naja wenn ich Euch die CSV hätte zur Verfügung stellen können, hätte ich dies natürlich auch getan :-)
Davon ab funktioniert der Code ja und importiert mir die Daten aus der CSV genau so wie es brauche, nur eben nicht in eine neue Mappe, mir geht es ja lediglich um folgende Codezeilen:

With Workbook(newWb).worksheet_.QueryTables.Add(Connection:="TEXT;" & csv_,
Destination:=Workbook(newWb).Sheets(newWks).Range("A1"))
.Name = ""

Bzw. darum wie ich als Destination:= eine neue Arbeitsmappe angeben kann und natürlich wie ich diese Mappe vorher Anlege damit der eingelesene Text dann dort in Tabelle1 landet und eben nicht in dem Aktiven Blatt von dem aus das ganze gestartet wird.
Und ich denke dafür braucht man nicht zwingend meine CSV sondern dass das mit jeder anderen Text Datei auch geht.
Anzeige
AW: CSV importieren und in Mappe bringen
15.02.2021 08:24:14
Jürgen
Problem selbst gelöst..
Danke

99 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige