Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
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 DATEN PER VBA

CSV DATEN PER VBA
09.07.2016 14:04:43
Susi
Hallo zusammen,
ich brauche dringend Hilfe und hoffe um eure Unterstützung.
Wir bekommen am Tag 10 bis 30 CSV Datei per Email am Tage verteilt auf 2 Schichten. Diese Speichern wir unter C:\Reklamation/CSV/ ab. Immer unter REB1,REB2,REB3 usw….
http://www.uploadagent.de/show-204899-1468065784.html
Ich möchte gerne in der Excel liste RGBGMBH.xls. mit einen Button klicken, die Daten REB* vom Order CSV holen und sie auflistet.
C:\Reklamation/RGBGMBH.xls
http://www.uploadagent.de/show-204900-1468065832.html
Ich habe mir sowas vorgestellt
Wir Speichern die Datei CSV ab unter C:\Reklamation/CSV/ REB1,REB2,REB3 usw….
Danach möchte ich den Button in der EXCEL Liste RGBGMBH.xls drücken, der holt mir die CSV REB1 usw… kopiert sie mir in die Liste untereinander ein und in Spalte K das übertragsdatum mit Uhrzeit
Die CSV Listen die einkopiert werden sollen dann in den Ordner C:\Reklamation\erl verschoben werden mit Datum und Uhrzeit.
Also wird die REB1 in die Liste RGBGMBH.xls hineinkopiert , dann wird diese Datei in den Ordner Erl. Verschoben und unbenennt REB10907201613:43 ( REB1 Datum Uhrzeit).
Drücke ich auf meinen Button und es befindet sich keine CSV Datei im Ornder, dann soll die Meldung kommen: Keinen DATEN vorhanden.
Leider konnte ich die Daten nicht hochladen sondern über UPLOADER
Bitte um Hilfe.
Danke Suso

37
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV DATEN PER VBA
09.07.2016 16:35:36
Matthias
Hallo Susi!
Liegen die Daten in der CSV Datei so vor wie in der Anlage von dir oder ist das was beim Kopieren verschoben worden. Also bei dir sieht das jede Zeile wie ein String bzw, eine Verkettung von Strings aus, da ganze bzw. Teile einer Zeile mit " eingefasst sind. Bei einem "normalen" Einfügen einer CSV werden deshalb der Inhalt in einer Zelle dargestellt. Selbst die Leerzeichen halten nicht als Trennmittel her, da in einigen Zeilen zwischen Wert 2 und 3 keine haben. Wenn du bei dir die Original Csv im Excel öffnest, sind dann auch alle Werte in Spalte 1 oder schön auf die Spalten aufgeteilt? Weil so würde ich sagen, müsste man erst die Datei überarbeiten und dann einfügen. Frage aber vorher, bevor man sich unnötig arbeit macht.
VG Matthias

Anzeige
AW: CSV DATEN PER VBA
09.07.2016 17:02:45
Susi
Hallo Matthias,
ja wir müssen alle CSV datein mit Text in den Spalten trennen und dann kopieren wir die Spalten und fügen die danach in unsere Liste RGBGMBH.xls ein. Danach nehmen wir die CSV Datei und schiieben sie in den ORDNER erl. z.b. REB10907201613:43 ein.
Danke das du mir hilfst.
SUSI

AW: CSV DATEN PER VBA
09.07.2016 20:54:50
Susi
Hi,
ich hab es gerade noch mal gemacht. Wir CSV Dateien öffnen
Spalte A markieren
Text in Spalten
Getrennt
weiter
Trennzeichen bei
Tabstopp
Leerzeichen
Andre "
Fertig stellen.
Danke bis dann
Susi

AW: CSV DATEN PER VBA
09.07.2016 21:03:17
Peter
Hallo Susi,
bitte richte zunächst mal die folgenden Pfade (Ordner) unter Laufwerk "C:\" ein:
C:\Reklamation
darunter die 3 Pfade (Ordner)
C:\Reklamation\Reklamation_CSV
C:\Reklamation\Reklamation_erl
C:\Reklamation\Reklamation_Excel
In den Pfad "C:\Reklamation\Reklamation_CSV" speichere bitte Deine zu bearbeitende CSV-Dateien ab. Der Pfad "C:\Reklamation\Reklamation_erl" nimmt bei Durchführung des Makros die erledigte CSV-Datei auf. Unter den Pfad "C:\Reklamation\Reklamation_Excel" ist die hier beigefügte Datei
https://www.herber.de/bbs/user/106888.xlsm
einzufügen. Bitte speichere diese Datei mit dem Namen "RGBGMBH.xlsm". In das gelbe Feld bitte den Namen der ersten zu bearbeitenden CSV-Datei eingeben (z. B. "reb1") und anschließend den Makro-Button drücken. Die CSV-Datei wird zunächst übernommen in den Pfad "...\Reklamation_Excel", dort in eine TXT-Datei umgewandelt (indem einfach die Endung geändert wird in ".TXT"). Anschließend wird das TXT-File in Excel geladen und der Inhalt in die Datei "RGBGMBH.xlsm" eingefügt. Danach wird noch das CSV-File aus der "...\Reklamation_CSV" in "...\Reklamation_erl" übertragen. In den Pfaden "...\Reklamation_CSV" und "...\Reklamation_Excel" werden die dort noch befindlichen CSV- bzw. TXT-Files gelöscht.
Es geht also nicht ganz so vollautomatisch wie von Dir gewünscht. D. h., es ginge schon, aber nicht von hier aus, sondern nur vor Ort. Hierzu müßte der Pfad mit den CSV-Files ausgelesen werden und nach und nach CSV-Datei für CSV-Datei mit diesem Programm bearbeitet werden.
Bitte mal ausprobieren, FeedBack wäre schön.
Mit freundlichem Gruß
Peter Kloßek

Anzeige
AW: CSV DATEN PER VBA
09.07.2016 21:44:54
Susi
Hallo Peter,
das klappt super, kann man noch einbauen das eine Fehlermeldung kommt z.b. keine Daten gefunden
würde es eine möglichkeit geben, das man mehrer Gelbe Felder hat und die nach und nach einfügt?
Danke
SUSI

AW: CSV DATEN PER VBA
09.07.2016 22:30:32
Matthias
Guten Abend!
Kam leider nicht vorher zum Antworten. Nun ist die Arbeit schon erledigt. :-) Da ich hier leider keine Dateien runterladen kann, besteht ggf. die Möglichkeit nur den Code zu posten?!
Kann jetzt grad den Code nicht nachvollziehen (sehe ihn ja nicht) und weiß nicht, was Peter mit nicht ganz so vollautomatisch meint. Aber ggf. könnte man noch ergänzen, dass der Code automatisch alles CSV Dateien prüft, die in dem Ordner liegen.
Schönen Abend noch.
Matthias

Anzeige
AW: CSV DATEN PER VBA
10.07.2016 05:29:26
Susi
Hallo Matthia,
danke auch für deine Hilfe.
Anbei der Code:
Sub Makro1()
Datname1 = Range("Tabelle1!f1")
Datname2 = Range("Tabelle1!f2")
Datname3 = Range("Tabelle1!f3")
Datname4 = Range("Tabelle1!f4")
textdat = Range("Tabelle1!d4")
Ansetz = Range("Tabelle1!m2")
FileCopy (Datname1), (Datname2)
Name (Datname2) As (Datname3)
Workbooks.OpenText (Datname3), _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=True, OtherChar:="""", FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1),  _
Array(7 _
, 1), Array(8, 1), Array(9, 1), Array(10, 1)), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.NumberFormat = "0"
Columns("D:D").Select
Selection.NumberFormat = "0"
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Windows("RGBGMBH.xlsm").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal
Range(Ansetz).Select
ActiveSheet.Paste
Application.CutCopyMode = xlCopy
FileCopy (Datname1), (Datname4)
Kill (Datname1)
Windows(textdat).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Kill (Datname3)
End Sub
Liebe Grüße
SUSI

Anzeige
AW: CSV DATEN PER VBA
10.07.2016 09:04:04
Peter
Hallo Susi,
man kann mit einem einzigen Klick sämtliche CSV-Dateien in das Excel-Sheet einfügen, die in dem bestimmten Verzeichnis (fragt sich natürlich welches?) vorhanden sind. Dafür ist folgendes nötig:
1. Die CSV-Dateien müssten aus dem Verzeichnis ausgelesen werden und in der Excel-Datei "RGBGMBH.xlsm" z. B. in Tabelle2 zur Verfügung stehen.
2. Die CSV-Dateien werden dann nach und nach einzeln abgearbeitet. Bei dem Auslesen werden die Dateien in der Regel in einer Spalte untereinander ausgegeben. Man fügt die erste Datei durch kopieren in das gelbe Feld ein und läßt den Makro1 laufen. Anschließend wird von der 2. bis zur Leer-Zelle nach der letzten Datei in die Position der 1. Datei kopiert. Die nächste Datei wird in das gelbe Feld kopiert. Dann läuft wiederum der Makro1 (als Schleife, solange, bis er auf die leere Zelle nach der letzten CSV-Datei trifft; dann kommt die MSGBox zum Zuge: "Keine weitere Datei vorhanden."
Um dies zu programmieren, muss man genaue Kenntnis der tatsächlichen Gegebenheiten vor Ort haben. Also z. B. genau wissen, auf welchen Pfaden die CSV-Dateien u. die anderen Dateien liegen. Das Ganze ist mit erheblicher Arbeit verbunden und wird wohl kaum durch ein Forumsmitglied (kostenlos) erledigt. Aber vielleicht möchte Matthias diese Arbeit auf sich nehmen? In diesem Fall musst Du ihm genaue Informationen geben.
Noch ein Hinweis: Die ganzen operationsbezogenen Angaben im Kopf von RGBMBH.xlsm kann man durch benutzerdefinierte Formatierung mit ";;;" unsichtbar machen.
Mit freundlichem Gruß
Peter Kloßek

Anzeige
AW: CSV DATEN PER VBA
10.07.2016 10:02:58
Susi
Hallo Peter,
danke für deine hilfe und deine wertvolle Zeit.
Wenn ich das weiß kann man Tabelle 2 benutzen. Alle Dateien speichern wir immer in den Ordner Reklamation CSV ab. Auch immer mit Reb1 Reb2 bis Reb100. Zu erst werden die Datei nicht dort abgespeichert und wenn ich dazu komme ,werde ich eine Datei nach der anderen abarbeiten. genauso wie dein Makro es macht.
Leider habe ich keine Ahnung wie das VBA funktioniert. Wir waren mal eine große Firma und hat dafür einen EDV Mitarbeiter. Leider waren wir letztes Jahr beinahe pleite. Aus kosten gründen wurde EDV entlassen und jetzt machen wir die Büroarbeiten zu dritt. Vorher waren wir 8.
Deswegen der weg indem Forum.
Danke nocheinmal für deine Hilfe.
Liebe Grüße
susi

Anzeige
AW: CSV DATEN PER VBA
10.07.2016 10:36:28
Peter
Hallo Susi,
nach Deinen Schilderungen kann ich mir die Lage in Eurem Unternehmen und insbesondere die Arbeitsbelastung gut vorstellen. Ich werde daher ausnahmsweise mal das Ganze vervollständigen. Meine Frage: Können die CSV-Dateien allesamt auf den von mir vorgeschlagenen Pfad "C:\Reklamation\Reklamation_CSV" von Euch eingestellt werden? Wenn nicht, dann brauche ich die ganz genaue Bezeichnung des Pfades, auf dem die CSV-Dateien sich befinden. Bitte in dem Fall mit Laufwerksangabe den kompletten Pfad mitteilen. Außerdem muss ich wissen, auf welchem genauen Pfad sich die erledigten Dateien befinden sollen und auf welchem Pfad sich die Excel-Datei "RGBGMBH.xlsm" befinden soll. Am einfachsten wäre es, wenn die von mir vorgeschlagenen Pfade benutzt werden könnten.
M.f.G. Kloßek

Anzeige
AW: CSV DATEN PER VBA
10.07.2016 11:40:40
Susi
Hallo Peter,
danke für Alles. Ich kann froh sein, dass mein Chef mich nicht entlassen habe, denn mit 46 Jahren ist es echt nicht einfach einen neue Arbeitsstelle zu finden.
Du kannst die Pfade so lassen wie sie sind. Ich bin nicht in der Arbeit aber zu Not kann ich die Ja ändern. Denn ich weis nicht genau ob es das Laufwerk C oder D ist. Sonst ist alles genauso wie du es vorbereitet hast.
Danke
liebe Grüße SUSI

Respekt
10.07.2016 12:15:55
MB12
Hallo liebe Susi,
„Ich kann froh sein, dass mein Chef mich nicht entlassen hat..“
– du solltest das anders sehen: Dein Chef muss froh sein, dass du dich für ihn und eure Firma so rein hängst!!
Deine Situation kann ich gut nachvollziehen: War nach Insolvenz mehrere Jahre Alg-lerin (war wegen Zukunftsängsten zu „treu“), fand aber mit 55 wieder einen tollen Job, nachdem ich frech behauptet hatte, ich kenne mich mit Projektplanung aus.
Heute, mit fast 60, entspricht das der Realität, ich bewege mich in mehreren Datenbanken, mit der Hilfe (u.a. der Herbianer) entwickle ich Vorlagen, bin im Kompetenzteam für die Einführung eines BDE-Systems für unsere Fa. mit über 1000 MA, führe Schulungen durch etc. Aber auch ich arbeite häufig von zu Hause aus, da viele Webseiten aus Sicherheitsgründen gesperrt sind und ich daheim mehr Ruhe habe.
Lass dich nicht unterkriegen und besinne dich auf deine Erfahrung und Fähigkeiten.
Alles Gute, Margarete

Anzeige
AW: Respekt
10.07.2016 12:35:39
Susi
Hallo Margarete,
Danke für deine Nachricht. Finde es auch mega was du erreicht hast. Danke.
Ich finde es super, das es Menschen gibt, wie in diesem Forum, die sich Zeit nehmen und andere Helfen ( wie in meinen Fall)
Man müsste diese jeden Tag nur Knuddeln :-)
Viele Liebe Grüße
Susi

AW: Respekt
10.07.2016 12:36:07
Susi
Hallo Margarete,
Danke für deine Nachricht. Finde es auch mega was du erreicht hast. Danke.
Ich finde es super, das es Menschen gibt, wie in diesem Forum, die sich Zeit nehmen und andere Helfen ( wie in meinen Fall)
Man müsste diese jeden Tag nur Knuddeln :-)
Viele Liebe Grüße
Susi

Anzeige
AW: Respekt
10.07.2016 12:36:12
Susi
Hallo Margarete,
Danke für deine Nachricht. Finde es auch mega was du erreicht hast. Danke.
Ich finde es super, das es Menschen gibt, wie in diesem Forum, die sich Zeit nehmen und andere Helfen ( wie in meinen Fall)
Man müsste diese jeden Tag nur Knuddeln :-)
Viele Liebe Grüße
Susi

CSV-Dateien
10.07.2016 12:43:58
Peter
Hallo Susi,
eine Änderung der Pfade in meinem Programm ist leider gar nicht einfach. Ich gehe jetzt mal von meinem Vorschlag aus. Du musst dann in der Firma die Pfade so einrichten, wie von mir vorgesehen und die CSV-Dateien in den Pfad "C:\Reklamation\Reklamation_CSV" über den Windows-Explorer hineinkopieren. Alle weiteren Zugänge dann direkt unter diesem Pfad ablegen.
Ich werde eine Zeitlang benötigen und bitte u. U. bis Montag um Geduld.
M.f.G. Kloßek

kein problem Peter. Danke
10.07.2016 13:51:33
Susi
.

CSV-Dateien
10.07.2016 16:37:13
Peter
Hallo Susi,
es ging jetzt doch schneller, als ich gedacht hatte. Also bitte mal die Pfade anlegen:
C:\Reklamation
darunter
C:\Reklamation\Reklamation_CSV Hier sind die CSV-Dateien einzustellen
C:\Reklamation\Reklamation_erl Hier werden vom Programm die erledigten Dateien
mit Datum und Uhrzeit eingestellt
C:\Reklamation\Reklamation_Excel Hier ist die beigefügte Datei einzustellen, außerdem
erfolgt hier die Umwandlung in ".txt".
https://www.herber.de/bbs/user/106894.xlsm
Diese Datei bitte mit dem Namen "RGBGMBH.xlsm" als Excel-Datei einstellen.
Bitte Vorsicht!!Es empfiehlt sich, in einem anderen (beliebigen) Pfad zunächst eine Sicherungskopie der CSV-Dateien abzulegen. Es kann ja auch mal was schiefgehen und es droht sonst Datenverlust!!
Also nochmal gründlich ausprobieren. Bei mir liefen die Tests mit 16 CSV-Dateien und insgesamt 236 Sätzen in wenigen Sekunden durch. Feedback wäre schön.
M.f.G. Kloßek

Testdateien CSW
10.07.2016 18:39:54
Peter
Hallo Susi,
damit Du auch fleißig zu Hause testen kannst, sende ich Dir hiermit noch meine 16 Testdateien.
https://www.herber.de/bbs/user/106896.zip
M.f.G. Kloßek

AW: CSV DATEN PER VBA
10.07.2016 14:04:18
Matthias
Hallo Susi, Hallo Peter!
Danke für den Code. Da Peter aber eh schon am Arbeiten ist, will ich ihm da nicht in seinem Code rumwerkeln. Hier mal noch eine Variante, mit der die Dateien automatisch geöffnet und ausgelesen werden. Vllt. kann es Peter ja mit gebrauchen. Die Pfade sind dabei so wie bei dir am Anfang mal erwähnt - könnten aber im Code auch geändert werden. In der Datei wird das Datum + Zeit vom kopieren mit eingetragen. Lediglich beim Abspeichern wird das Format der Zeit geändert, da im Dateinamen keine : sein dürfen. Habe die : deshalb durch einen . ersetzt. Der Code müsste lediglich einer Schaltfläche zugeordnet werden.
Euch noch einen schönen Sonntag , Kopf hoch und immer positiv denken!
VG Matthias
Option Explicit
Sub csv_importieren()
Dim ablagepfad As String
Dim dateiname As String
Dim pfaderledigt As String
Dim zieldatei As Object
Dim quelle As Object
Dim letztezeile As Long
Dim zeilequelle
Application.ScreenUpdating = False
'die Zieldatei, da wo das Makro ausgeführt wird
Set zieldatei = ThisWorkbook
'Zeile in die eingetragen wird
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'pfad für die Ausgangs CSV Dateien
ablagepfad = "C:\Reklamation\csv"
If Right(ablagepfad, 1)  "\" Then ablagepfad = ablagepfad & "\"
'C:\Reklamation\CSV\
'pfad wohin abgelegt werden soll, also die erledigten
pfaderledigt = "C:\Reklamation\erl"
If Right(pfaderledigt, 1)  "\" Then pfaderledigt = pfaderledigt & "\"
'C:\Reklamation\erl
'erste Datei suchen
dateiname = Dir(ablagepfad & "*.csv")
'wenn keine Datei gefunden, Meldung und Abbruch
If dateiname = "" Then
MsgBox "Keinen DATEN vorhanden.", , "Fehler bei Suche"
End
End If
'falls gefunden, alle durchgehen
Do Until dateiname = ""
'Dateien öffnen
Workbooks.Open ablagepfad & dateiname
Set quelle = ActiveWorkbook
'in Spaltenaufteilen
ActiveSheet.Columns(1).Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
"""", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
'Anzahl der einzutragendenzeilen ermitteln
zeilequelle = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
'Daten kopieren
quelle.Worksheets(1).Range(quelle.Worksheets(1).Cells(2, 1), _
quelle.Worksheets(1).Cells(zeilequelle, 9)).Copy zieldatei.Worksheets(1) _
.Cells(letztezeile, 1)
'Datum und Zeit des Übertrages rein
zieldatei.Worksheets(1).Cells(letztezeile, 11) = Now
'Zeile für nächsten Eintrag neu setzen
letztezeile = letztezeile + zeilequelle - 1
'csv schließen
quelle.Close savechanges:=False
'CSV umbenennen und verschieben
Name ablagepfad & dateiname As pfaderledigt & Left(dateiname, Len(dateiname) - 4) _
& " " & Replace(Now, ":", ":") & ".csv"
'nächste CSV suchen
dateiname = Dir
Loop
'Formate noch anpassen, Spaltenbreite an Text anpassen + Format auf Zahl für Spalte B C
zieldatei.Worksheets(1).Columns("A:K").AutoFit
zieldatei.Worksheets(1).Columns("B:C").NumberFormat = "0"
Set zieldatei = Nothing
Set quelle = Nothing
Application.ScreenUpdating = True
End Sub

Matthias
10.07.2016 16:33:11
Susi
Hallo Matthias,
leider kommt ein Fehler.
Laufzeitfehler5
Erholt die Daten und bei der Zeile siehe Fett wird dann GELBE Fehlermeldung
Sub csv_importieren()
Dim ablagepfad As String
Dim dateiname As String
Dim pfaderledigt As String
Dim zieldatei As Object
Dim quelle As Object
Dim letztezeile As Long
Dim zeilequelle
Application.ScreenUpdating = False
'die Zieldatei, da wo das Makro ausgeführt wird
Set zieldatei = ThisWorkbook
'Zeile in die eingetragen wird
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'pfad für die Ausgangs CSV Dateien
ablagepfad = "C:\Reklamation\Reklamation_CSV"
If Right(ablagepfad, 1)  "\" Then ablagepfad = ablagepfad & "\"
'C:\Reklamation\CSV\
'pfad wohin abgelegt werden soll, also die erledigten
pfaderledigt = "C:\Reklamation\Reklamation_erl"
If Right(pfaderledigt, 1)  "\" Then pfaderledigt = pfaderledigt & "\"
'C:\Reklamation\erl
'erste Datei suchen
dateiname = Dir(ablagepfad & "*.csv")
'wenn keine Datei gefunden, Meldung und Abbruch
If dateiname = "" Then
MsgBox "Keinen DATEN vorhanden.", , "Fehler bei Suche"
End
End If
'falls gefunden, alle durchgehen
Do Until dateiname = ""
'Dateien öffnen
Workbooks.Open ablagepfad & dateiname
Set quelle = ActiveWorkbook
'in Spaltenaufteilen
ActiveSheet.Columns(1).Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
"""", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
'Anzahl der einzutragendenzeilen ermitteln
zeilequelle = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
'Daten kopieren
quelle.Worksheets(1).Range(quelle.Worksheets(1).Cells(2, 1), _
quelle.Worksheets(1).Cells(zeilequelle, 9)).Copy zieldatei.Worksheets(1) _
.Cells(letztezeile, 1)
'Datum und Zeit des Übertrages rein
zieldatei.Worksheets(1).Cells(letztezeile, 11) = Now
'Zeile für nächsten Eintrag neu setzen
letztezeile = letztezeile + zeilequelle - 1
'csv schließen
quelle.Close savechanges:=False
'CSV umbenennen und verschieben
 Name ablagepfad & dateiname As pfaderledigt & Left(dateiname, Len(dateiname) - 4) _
& " " & Replace(Now, ":", ":") & ".csv"
    'nächste CSV suchen
dateiname = Dir
Loop
'Formate noch anpassen, Spaltenbreite an Text anpassen + Format auf Zahl für Spalte B C
zieldatei.Worksheets(1).Columns("A:K").AutoFit
zieldatei.Worksheets(1).Columns("B:C").NumberFormat = "0"
Set zieldatei = Nothing
Set quelle = Nothing
Application.ScreenUpdating = True
End Sub
Danke
Susi

AW: Matthias
10.07.2016 19:09:18
Matthias
Hallo! Sorry, das war die Versin wo ich noch ein wenig gebastelt und getestet habe. Beim Umspeichern habe ich zwar gesagt, dass ich : ersetze aber hab's dann doch nicht gemacht. :-( Wäre jetzt behoben, wenn ihr das noch braucht. Viele Grüße
Option Explicit
Sub csv_importieren()
Dim ablagepfad As String
Dim dateiname As String
Dim pfaderledigt As String
Dim zieldatei As Object
Dim quelle As Object
Dim letztezeile As Long
Dim zeilequelle
Application.ScreenUpdating = False
'die Zieldatei, da wo das Makro ausgeführt wird
Set zieldatei = ThisWorkbook
'Zeile in die eingetragen wird
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'pfad für die Ausgangs CSV Dateien
ablagepfad = "C:\Reklamation\csv"
If Right(ablagepfad, 1)  "\" Then ablagepfad = ablagepfad & "\"
'C:\Reklamation\CSV\
'pfad wohin abgelegt werden soll, also die erledigten
pfaderledigt = "C:\Reklamation\erl"
If Right(pfaderledigt, 1)  "\" Then pfaderledigt = pfaderledigt & "\"
'C:\Reklamation\erl
'erste Datei suchen
dateiname = Dir(ablagepfad & "*.csv")
'wenn keine Datei gefunden, Meldung und Abbruch
If dateiname = "" Then
MsgBox "Keinen DATEN vorhanden.", , "Fehler bei Suche"
End
End If
'falls gefunden, alle durchgehen
Do Until dateiname = ""
'Dateien öffnen
Workbooks.Open ablagepfad & dateiname
Set quelle = ActiveWorkbook
'in Spaltenaufteilen
ActiveSheet.Columns(1).Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
"""", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
'Anzahl der einzutragendenzeilen ermitteln
zeilequelle = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
'Daten kopieren
quelle.Worksheets(1).Range(quelle.Worksheets(1).Cells(2, 1), _
quelle.Worksheets(1).Cells(zeilequelle, 9)).Copy zieldatei.Worksheets(1) _
.Cells(letztezeile, 1)
'Datum und Zeit des Übertrages rein
zieldatei.Worksheets(1).Cells(letztezeile, 11) = Now
'Zeile für nächsten Eintrag neu setzen
letztezeile = letztezeile + zeilequelle - 1
'csv schließen
quelle.Close savechanges:=False
'CSV umbenennen und verschieben
Name ablagepfad & dateiname As pfaderledigt & Left(dateiname, Len(dateiname) - 4) _
& " " & Replace(Now, ":", ".") & ".csv"
'nächste CSV suchen
dateiname = Dir
Loop
'Formate noch anpassen, Spaltenbreite an Text anpassen + Format auf Zahl für Spalte B C
zieldatei.Worksheets(1).Columns("A:K").AutoFit
zieldatei.Worksheets(1).Columns("B:C").NumberFormat = "0"
Set zieldatei = Nothing
Set quelle = Nothing
Application.ScreenUpdating = True
End Sub

Dankeschön
10.07.2016 19:58:21
Susi
Hallo Peter
Hallo Matthias,
ich werde es morgen in der Arbeit testen.
Ich möchte mich gaaaanz Herzlich bei euch bedanken.
Ich weiß gar nicht wie ich es gut machen kann.
Danke Danke Danke
Liebe und beste Grüße
Susi

Frage an Matthias
11.07.2016 07:39:59
Susi
Hallo,
bin jetzt in der Arbeit und teste deinen Code. Danach teste ich Peter seinen.
Bei dir kommt die Meldung: Soll die Inhalte der Zellen des Zielbereichs überschrieben weden?
Ok oder abbrechen
Drücker ich auf ok macht er das. Wenn ich auf abbrechen gehe kommt ein gelber Fehler bei:
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
"""", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
kann man den Fehler ausblenden ?
Danke
susi

Frage an Matthias
11.07.2016 07:40:00
Susi
Hallo,
bin jetzt in der Arbeit und teste deinen Code. Danach teste ich Peter seinen.
Bei dir kommt die Meldung: Soll die Inhalte der Zellen des Zielbereichs überschrieben weden?
Ok oder abbrechen
Drücker ich auf ok macht er das. Wenn ich auf abbrechen gehe kommt ein gelber Fehler bei:
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
"""", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
kann man den Fehler ausblenden ?
Danke
susi

AW: Frage an Matthias
11.07.2016 09:47:07
Susi
Hi nochmal,
er kopiert die oben wieder rein und nicht unten dran.
susi

AW: Frage an Matthias
11.07.2016 12:39:02
Matthias
Hallo Susi! Mhm. ALso hab's eben nochmal bei mir getestet, da läuft der Code durch und auch die Meldung kam nicht. Habe mal eine Stelle geändert und die Unterdrückung der Meldung eingebaut. Der Code war für die RGBGMBH.xls gedacht. Und beginnen deinen Daten in Spalte A oder später? Suche nämlich jetzt nur in Spalte A nach dem letzten Eintrag und das ist dann der Bezugswert für das Eintragen. HIer mal die Version mit der ich teste.
https://www.herber.de/bbs/user/106909.xls
Viele Grüße Matthias

Option Explicit
Sub csv_importieren()
Dim ablagepfad As String
Dim dateiname As String
Dim pfaderledigt As String
Dim zieldatei As Object
Dim quelle As Object
Dim letztezeile As Long
Dim zeilequelle
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'die Zieldatei
Set zieldatei = ThisWorkbook
'Zeile in die eingetragen wird
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'pfad für die CSV Dateien
ablagepfad = "C:\Reklamation\csv"
'C:\Reklamation\CSV\
If Right(ablagepfad, 1)  "\" Then ablagepfad = ablagepfad & "\"
'pfad wohin abgelegt werden soll
pfaderledigt = "C:\Reklamation\erl"
If Right(pfaderledigt, 1)  "\" Then pfaderledigt = pfaderledigt & "\"
'C:\Reklamation\erl
'erste Datei suchen
dateiname = Dir(ablagepfad & "*.csv")
'wenn keine Datei gefunden, Meldung und Abbruch
If dateiname = "" Then
MsgBox "Keinen DATEN vorhanden.", , "Fehler bei Suche"
End
End If
'falls gefunden, alle durchgehen
Do Until dateiname = ""
'Dateien öffnen
Workbooks.Open ablagepfad & dateiname
Set quelle = ActiveWorkbook
'in Spaltenaufteilen
ActiveSheet.Columns(1).Select
Selection.TextToColumns Destination:=ActiveSheet.Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
"""", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), _
Array(5, 1) , Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1)), _
TrailingMinusNumbers:=True
'Anzahl der einzutragendenzeilen ermitteln
zeilequelle = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
'Daten kopieren
quelle.Worksheets(1).Range(quelle.Worksheets(1).Cells(2, 1), _
quelle.Worksheets(1).Cells(zeilequelle, 9)).Copy _
zieldatei.Worksheets(1).Cells(letztezeile, 1)
'Datum und Zeit des Übertrages rein
zieldatei.Worksheets(1).Cells(letztezeile, 11) = Now
'Zeile für nächsten Eintrag neu setzen
letztezeile = letztezeile + zeilequelle - 1
'csv schließen
quelle.Close savechanges:=False
'CSV umbenennen und verschieben
Name ablagepfad & dateiname As pfaderledigt & Left(dateiname, Len(dateiname) - 4) _
& " " & Replace(Now, ":", ".") & ".csv"
'nächste CSV suchen
dateiname = Dir
Loop
'Formate noch anpassen, Spaltenbreite an Text anpassen und Format auf Zahl für Spalte B und C
zieldatei.Worksheets(1).Columns("A:K").AutoFit
zieldatei.Worksheets(1).Columns("B:C").NumberFormat = "0"
Set zieldatei = Nothing
Set quelle = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Datei anpassen
11.07.2016 17:14:28
Peter
Hallo Susi,
ich kann Dir gerne meine Datei auf Eure Verhältnisse anpassen. Dazu benötige ich jedoch die kompletten Pfadnamen für
1. die Excel-Datei "RGBGMBH.xlsm"
2. die CSV-Dateien
3. die erledigten CSV-Dateien
Bitte mit der Laufwerksangabe!
Mit der von Dir geposteten "Originaldatei" kann ich eigentlich nichts anfangen. Hat sich das ursprüngliche Format von "RGBGMBH.xlsm" geändert?
M.f.G. Kloßek

AW: Datei anpassen
11.07.2016 19:58:05
Susi
Hallo Peter,
der pfad heißt:
L:\Transfer\Alles\Retoure\Vorlage1\Reklamation_csv
L:\Transfer\Alles\Retoure\Vorlage1\Reklamation_erl
und die Datei ist drin
L:\Transfer\Alles\Retoure\Vorlage1\
und heißt Retoure.xlsm.
Kannst du mir noch zeigen,wo man es ändert?
Danke Peter
Gruß
SUSI

AW: Datei anpassen
11.07.2016 20:20:07
Peter
Hallo Susi,
damit kann ich jetzt endlich was anfangen. Den Namen von dem 1. Arbeitsblatt von "Retoure.xlsm" werde ich aus Deiner Originaldatei entnehmen. Melde mich spätestens morgen wieder. Die Tests auf meinem Computer dauern etwas und werden mit den von Dir angegebenen Pfaden gefahren.
M.f.G. Kloßek

AW: Datei anpassen
11.07.2016 20:05:43
Matthias
Hallo Susi!
Musste die Datei mal nach xls umwandeln. Arbeite noch auf einem alten System. Also habe sie mal auf deine Tabellenblätter umgeschrieben und deine Pfade gelassen. Sollte jetzt eigentlich laufen.
https://www.herber.de/bbs/user/106926.xls
Viele Grüße Matthias

AW: Datei anpassen
11.07.2016 20:41:16
Susi
Hallo Peter,
der pfad heißt:
L:\Transfer\Alles\Retoure\Vorlage1\Reklamation_csv
L:\Transfer\Alles\Retoure\Vorlage1\Reklamation_erl
und die Datei ist drin
L:\Transfer\Alles\Retoure\Vorlage1\
und heißt Retoure.xlsm.
Kannst du mir noch zeigen,wo man es ändert?
Danke Peter
Gruß
SUSI

AW: Datei anpassen
11.07.2016 21:27:59
Peter
Hallo Susi,
das ging jetzt viel schneller, als ich dachte. Ich bin ein bischen von Deiner Vorlage abgewichen: Meine Überschrift steht nicht gleich in der 1. Zeile. Es soll ja noch Platz für den Makroknopf vorhanden sein. Bestimmt kannst Du die Formeln auf Deinen anderen Tabellen entsprechend anpassen.
Die Tabelle2 wird nach wie vor benötigt, wird aber ausgeblendet und dürfte daher nicht stören. Nur für den Ablauf des Programms wird sie eingeblendet - was aber nicht sichtbar ist. Neben dem Datum mit Zeitangabe habe ich noch den Dateinamen (z. B. "REB1") hinzugefügt. Damit ist das Ganze besser nachvollziehbar für eine Rückverfolgung.
Übrigens kannst Du nicht nur 100 CSV-Dateien auf einmal bearbeiten, sondern bis zu 999. Wenn Du nach der 100 wieder mit 1 beginnst, solltest Du zunächst die 100 in "Retoure.xlsm" einfügen, dann die 1; sonst kommt die 1 vor die 100.
https://www.herber.de/bbs/user/106927.xlsm
So, nunmüsste eigentlich alles klappen. Feedback wäre schön.
M.f.G. Kloßek

AW: Frage an Matthias
11.07.2016 20:08:20
Matthias
Hallo Susi!
Musste die Datei mal nach xls umwandeln. Arbeite noch auf einem alten System. Also habe sie mal auf deine Tabellenblätter umgeschrieben und deine Pfade gelassen. Sollte jetzt eigentlich laufen.
https://www.herber.de/bbs/user/106926.xls
Viele Grüße Matthias

Matthias und Peter
12.07.2016 19:20:41
Susi
huhu,
danke ihr zwei. Beide Versionen funktionieren
danke für alles. Bin mega glücklich.
Danke.
lg susi

Matthias und Peter
12.07.2016 21:30:07
Susi
huhu,
danke ihr zwei. Beide Versionen funktionieren
danke für alles. Bin mega glücklich.
Danke.
lg susi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige