Herbers Excel-Forum - das Archiv

Daten aus CSV-Datei per Makro kopieren.

Bild

Betrifft: Daten aus CSV-Datei per Makro kopieren.
von: Martin ST

Geschrieben am: 08.03.2005 09:54:24
Hallo zusammen,
ich möchte gerne per Makro Daten aus einer scv-Datei in ein bestimmtes Arbeitsblatt kopieren. wenn ich dies manuell tue, klappt es auch wunderbar.
Wenn ich die Arbeitsschritte aber als Makro aufzeichnen, wird die Formatierung nicht übernommen und mein Excelblatt ist nicht mehr zu gebrauchen.
Wie schaffe ich es, die Daten trotzdem per Makro zu kopieren?
Diesen Arbeitsgang muss ich täglich mehrmals durchführen und es wäre eine super Erleichterung.
Ich hoffe, auf eure Hilfe.
Danke.
Gruß
Martin
Bild

Betrifft: AW: Daten aus CSV-Datei per Makro kopieren.
von: Oberschlumpf
Geschrieben am: 08.03.2005 13:00:18
Hi Martin
Lade mal einen Auszug der CSV-Datei (ein paar Zeilen, damit man mit arbeiten kann) auf den Server und erklär noch mal anhand der Datei, was genau passieren soll.
Ciao
Thorsten
Bild

Betrifft: AW: Daten aus CSV-Datei per Makro kopieren.
von: Martin ST

Geschrieben am: 08.03.2005 13:15:25
Hier ist die Datei.
Die Daten der Zeilen 2- 20 sollen kpl. in ein Excelblatt eingefügt werden, das bereits dementsprechend formatiert ist. Kopiere ich die Zeilen manuell gehts ja, nur per Makro stimmt die Formatieren nicht mehr und es wirden alle Daten aus der CSV in die erste Spalte des Excelblatts kopiert.
Hochgeladene datei war eigentlich als cvs gespeichert. Läßt sich aber scheinbar so nicht hochladen. https://www.herber.de/bbs/user/19350.txt
Gruß
Martin
Bild

Betrifft: AW: Daten aus CSV-Datei per Makro kopieren.
von: Oberschlumpf

Geschrieben am: 08.03.2005 13:32:28
Hi
Vielen Dank schon mal.
Aber was soll ich damit anfangen??
Ich hab die Daten mal 1:1 in eine Excel-Tabelle übertragen
(die 1. Zeile als Überschrift, und darunter die 2. Zeile mit Daten)
Download des Tabellenkonverters                 Formeln in den Zellen als QuickNotiz
Von Oberschlumpf
Bild
A B C D E F G H I J K L M N O P Q
1 ;Umsatz RG Umsatz RG Absatz Absatz AT Anz. Anz.AD gesamt VJ VJ LJ VJ ges KDLJ KDVJ
2 53 5372,5 1 1047,5 10 46000 7500 26 14 7              

Was dabei rauskommt, siehst Du nun ja selber.
Du müsstest schon genau erklären, welcher Wert wo hin soll.
Hilfreich wäre vllt auch eine Bsp-Datei Deiner Excel-Datei, in der ja schon die Anordnung und Formatierung vorhanden ist.
Ciao
Thorsten
Bild

Betrifft: AW: Daten aus CSV-Datei per Makro kopieren.
von: Martin ST

Geschrieben am: 08.03.2005 13:44:37
Hallo Thorsten,
eigentlich ist die ganze Sache ganz einfach.
Mein Ecxelblatt beinhaltet die gleichen Daten wie die csv.Datei. Ist auch von der Anzahl der Spalten usw. gleich. In Excel habe ich die Daten zum Ausdruck vorbereitet, dh. Kopfzeilen usw. Außerdem gibts im Excelblatt noch zusätzliche Zeilen mit Summen usw.
Ich möchte nun einfach aus der csv., die mir von einem externen Programm erstellt wird, bestimmte Zeilen in meine Excelblatt kopieren, damit diese vernünftig gedruckt werden können. Wenn ich das manuell machen, dh. ich öffne beide Dateien, markiere in der csv. die Zeilen, koieren sie und gehen dann ins Excel uns sage "Inhalte einfügen" klappt das auch . Und diesen Vorgang möchte ich per makro laufen lassen.
Gruß
Martin
Bild

Betrifft: AW: Daten aus CSV-Datei per Makro kopieren.
von: Martin ST

Geschrieben am: 08.03.2005 13:27:29
Hier ist die Datei.
Die Daten der Zeilen 2- 20 sollen kpl. in ein Excelblatt eingefügt werden, das bereits dementsprechend formatiert ist. Kopiere ich die Zeilen manuell gehts ja, nur per Makro stimmt die Formatieren nicht mehr und es wirden alle Daten aus der CSV in die erste Spalte des Excelblatts kopiert.
Hochgeladene datei war eigentlich als cvs gespeichert. Läßt sich aber scheinbar so nicht hochladen. https://www.herber.de/bbs/user/19350.txt
Gruß
Martin
Bild

Betrifft: AW: Daten aus CSV-Datei per Makro kopieren.
von: Josef

Geschrieben am: 08.03.2005 19:58:33
Hallo!
Ein kleiner Ansatz:
vor kurzem hier im Forum erhalten.
Option Explicit
Option Base 1

Sub Read_Large_File_2()
Dim FileName   As String
Dim FileNum    As Integer
Dim ResultStr  As String
Dim wsSheet    As Worksheet
Dim strValues() As String
Dim lngRows    As Long
Dim lngRow     As Long
Dim intSheet   As Integer
Dim intCounter As Integer
FileName = Application.GetOpenFilename("Textdateien " & _
"(*.txt; *.csv),*.txt; *.csv")
If FileName = "" Or FileName = "Falsch" Then Exit Sub
FileNum = FreeFile()
Open FileName For Input As #FileNum
Application.ScreenUpdating = False
Workbooks.Add template:=xlWorksheet
lngRows = ActiveSheet.Rows.Count
lngRow = 1
intSheet = 1
ReDim strValues(lngRows, 1)
Application.StatusBar = "Blatt " & intSheet & " wird eingelesen"
Do While Seek(FileNum) <= LOF(FileNum)
Line Input #FileNum, ResultStr
If Left(ResultStr, 1) = "=" Then
strValues(lngRow, 1) = "'" & ResultStr
Else
strValues(lngRow, 1) = ResultStr
End If
If lngRow < lngRows Then
lngRow = lngRow + 1
Else
ActiveSheet.Range("A1:A" & lngRows) = strValues
ActiveWorkbook.Worksheets.Add after:=Worksheets(Worksheets.Count)
ReDim strValues(lngRows, 1)
lngRow = 1
intSheet = intSheet + 1
Application.StatusBar = "Blatt " & intSheet & " wird eingelesen"
End If
Loop
Close
ActiveSheet.Range("A1:A" & lngRows) = strValues
If MsgBox("Sollen die eingelesenen Daten auf Spalten verteilt werden?", _
vbYesNo, "Text in Spalten") = vbNo Then
Application.ScreenUpdating = True
Application.StatusBar = "Fertig"
Exit Sub
End If
intSheet = 0
For Each wsSheet In ActiveWorkbook.Worksheets
intSheet = intSheet + 1
Application.StatusBar = "Daten von Blatt " & intSheet _
& " werden bearbeitet"
With wsSheet
.Range("A:A").TextToColumns Destination:=.Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=True, _
Comma:=False, _
Space:=False, _
Other:=False
End With
Next wsSheet
Application.ScreenUpdating = True
Application.StatusBar = "Fertig"
End Sub

 Bild
Excel-Beispiele zum Thema "Daten aus CSV-Datei per Makro kopieren."
Textexport in CSV-Datei mit beliebigen Feldtrennern Export in *.CSV-Datei mit Kommata als Feldtrenner
Zeilenumbrüche in eine *.CSV-Datei übernehmen Die Zeilen mit Wert in Spalte C als CSV-Datei speichern