Hallo alle Zusammen,
ich bekomme täglich eine große (28Spalten/12Zeilen) .csv Datei. Aus dieser Datei benötige ich aber nur 8 Spalten, Diese Spalten sollen als txt -Datei (Tabs getrennt) gespeichert werden. Mit der ges. Excel-Datei ist das unter Speichern unter kein Problem, aber ich benötige nur bestimmte 8 Spalten.
Eine VBA Anwendung zu schreiben währe nicht sinnvoll, weil ich jedes mal eine neu Excel-Datei bekomme.
Vielleicht kann mir jemand helfen. Ich würde mich freuen.
Mit freundlichen Adventsgrüße
Detlev
Eine VBA Anwendung zu schreiben währe nicht sinnvoll, weil ich
jedes mal eine neu Excel-Datei bekomme.
Hallo Detlev,
sorry, „Hä“, warum sollte das nicht mit Vba lösbar sein?
Gruß
Reinhard
Hallo,
erstelle dir eine Excelmappe mit zwei Blättern. Auf dem ersten Blatt einen Button plazieren, der einen „öffnen“ Dialog anzeigt, wenn du ihn anklickst.
Darüber lädst du die CSV ein in das 2. Blatt, filterst die Spalten raus, die du brauchst, und speicherst das Blatt als Textdatei.
Soviel zum Prinzip. Bekommst du das selber hin oder brauchst du da Hilfe?
LG
Hallo kraftstromer,
die Idee ist Klasse. Eine Excel-Datei als Werkzeug zum Einlesen, verarbeiten und ausgeben zu verwenden. Das wird sicher funktionieren.
Meine fehlerhafte Vorstellung war, dass ich so etwas innerhalb der Excel-Datei mache, die ich täglich bekomme.
Danke für den Tipp. Ich werde es mal versuchen auf die Reihe zu bekommen. Sollte ich Probleme haben, melde ich mich wieder.
Ich wünsche noch einen schönen 2. Advent.
Detlev
Hallo kraftstromer,
Soviel zum Prinzip. Bekommst du das selber hin oder brauchst
du da Hilfe?
Danke, es hat soweit fast alles funktioniert.
Eine Sache könnte ich vielleicht noch verbessern, und zwar nach dem
Application.Dialogs(xlDialogOpen).Show
währe es schön, wenn der richtige Datenpfad angezeigt würde und nur die Dateien die mit .csv enden.
Wenn Du so freundlich bist und mir das zeigen würdest, wäre ich Dir sehr Dankbar.
Bis dann und noch einen schönen Tag
Detlev
nimm Application.GetOpenFilename:
dim FN as string
FN = Application.GetOpenFilename("csv, \*.csv")
if FN=False then Exit Sub
in FN ist dann der Name mit Pfad der gewählten Datei.
ich habs übrigens so gelöst:
Zwei Arbeitsblätter, EA und Temp. In EA ist nur ein Button, diesem folgenden Code zuweisen:
Private Sub Go()
Dim FN As String
Dim FN2 As String
Dim Pos As Integer
On Error Resume Next
' Temporäres Blatt leeren
Sheets("Temp").UsedRange.Clear
' Dateiname abfragen, Mappe öffnen, abbrechen wenn kein Name
FN = Application.GetOpenFilename("CSV, \*.CSV")
If FN = False Then Exit Sub
Workbooks.Open FN
' Arbeitsmappenname filtern
FN2 = FN
Pos = 0
Do
FN2 = Mid(FN2, Pos + 1)
Pos = InStr(1, FN2, "\")
Loop Until Pos = 0
' Aus geöffneter Mappe den Inhalt des ersten Blatts kopieren und
Workbooks(FN2).ActiveSheet.UsedRange.Copy
' in DIESE Mappe im Blatt "Temp" einfügen, andere Mappe schließen
ThisWorkbook.Sheets("Temp").Range("A1").PasteSpecial xlPasteValues
Workbooks(FN2).Close False
Sheets("EA").Select
' Angegebene Spalten löschen
sheets("Temp").Columns(spalte, zB "F:F"; mit der hintersten beginnen!).Delete
' Blatt "Temp" unter neuem Namen speichern
Sheets("Temp").Copy
ActiveWorkbook.SaveAs FN & ".txt", xlText
ActiveWorkbook.Close False
End Sub
LG
Hallo kraftstromer,
dieser Part war noch sehr hilfreich.
dim FN as string
FN = Application.GetOpenFilename(„csv, *.csv“)
if FN=False then Exit Sub
eine kleine Korektur muste ich vornehmen:
FN = Application.GetOpenFilename(„CSV-Files (*.csv), *.csv“)
If FN = „Falsch“ Then Exit Sub
Aber mit Deiner Hilfe konnte ich mein Problem lösen.
Ich sage „vielen Dank“ und ich wünsche Dir einen schönen Tag.
Bis zun nächsten Mal.
Mit freundlichen Grüßen
Detlev