Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel XP automatisieren bei Import von csv Files.





Frage

Ich möchte gerne meine Arbeitsschritte mit dem Programm Excel XP automatisieren bei Import von csv Files. Ich habe diverse csv Files im selben Ordner vorliegen. In diesen csv Files befinden sich vom Aufbau (Aber nicht vom Inhalt) her haargenau die gleichen Datensätze (A1 bis Y107). I. Ich möchte gerne diese csv Files in xls Files konvertieren, ohne dass ich den Textkonvertierungsassistenten jedes Mal für einzelne csv File neu Bedienen muss. (Die Daten werden von mir immer Gleich typisiert: im Fenster1: Dateityp: Getrennt, Import beginnen in Zeile: 1, Dateiursprung: 1252: Western European (Windows) Im Fenster2: Trennzeichen: Tabstopp, Komma Texterkennungszeichen: `` Im Fenster3: Dateiformat der Spalten: Text) Die nun in xls konvertierte Datei soll wie folgt heißen. II. Das Tabellenblatt: soll heißen wie der Inhalt der Zelle A1 III. Der Dateiname: wie der Inhalt der Zelle C7. Ich freue mich auf ausführliche Antworte n…

Antwort 1 von Axcel

Nur mal so am Rande: Man benötigt zum Import von CSV-Dateien den Textkonvertierungsassistenten nicht. Excel kennt und beherrscht das CSV-Format. Es gibt lediglich in der deutschen Version einen Bug beim Öffnen durch Doppelklick im Explorer. Öffnen über "Menü->Datei->Öffnen" und mittels "Kontextmenü->Senden an" funktioniert problemlos.
Den Bug kann man auch in den Ordneroptionen/Dateitypen entfernen (Antwort 3):
https://supportnet.de/listthread/1016883

Antwort 2 von Axcel

Zitat:
Trennzeichen: Tabstopp, Komma
Texterkennungszeichen: ``

Das Prob könnte sein, dass Dein CSV etwas sehr unkonventionell ist. Meines Wissens gibt es nur jeweils ein einziges Trennzeichen innerhalb von CSV. Bei uns ist es normalerweise das Semikolon, die Angelsachsen benutzen meist das Komma. Das Texterkennungszeichen ist das zweistrichige Anführungszeichen ("). Woher hast Du die Dateien?

Antwort 3 von coros

Hallo cnisdm,

gestatte mir zum Anfang eine kleine Anmerkung. Ein Hallo am Anfang und ein Gruß am Ende würde Deinen Beitrag gleich viel netter aussehen lassen. Wenn Du zum Bäcker gehst sagst Du ja auch beim Reingehen "Guten Tag" und beim Gehen "Auf Wiedersehen". Denn die Leute, an die Du Deine Frage richtest, sitzen zwar am PC, sind aber dennoch Menschen.

Nun zu Deiner Frage: Zeichne Dir die Schritte mit dem Makrorekorder auf und schon hast Du ein Makro, was genau das macht, was Du möchtest.
Wie man ein Makro aufzeichnet habe ich auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 7 beschrieben. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von cnisdm

Hallo Zusammen, und erstmal danke für die Beiträge.

1 )Ich habe alle Möglichen Varianten ausprobiert die csv-Dateien zu öffnen. Ich habe als Beispiel: in der

Zeile A1: Protocol,"Transp","Transport#" usw…

diese bekomme ich konvertiert wie fogt:

Zeile A1 Protocol A2 Transp A3 Transport# usw.

Da nun alle csv-Dateien die ich aus dem Daten Bank downloade konvertiert werden müssen, möcht ich alle Dateien gleichzeitig öffen( Einen ähnlichen Beitrag hier habe ich auch gelesen
„Mehrere csv Dateien öffnen“.
Ich habe folgende Fehlermeldung bekommen nach dem ich diesen Makroausführte:

Sub Alle_CSV_Dateien_oeffnen()
Dim CSV_Dateiname As String, Pfad As String
Application.ScreenUpdating = False
Pfad = "C:\\Dein Ordner\"
CSV_Dateiname = Dir(Pfad & "*.csv")
Do While Dateiname <> ""
Workbooks.Open Pfad & CSV_Dateiname
Dateiname = Dir
Loop
End Sub


Fehlermeldung:
Microsoft Visual Basic
Fehler beim Kompilieren: Variable nicht definiert

Wobei Z8, S19 markiert wird, also:
Do While Dateiname <> ""

2) Mit dem Makroaufzeichen geht es auch nicht. Da die Datei, an dem ich die o.g. Arbeitsschritte mittels Makrorekorder durchführe, nicht nur vom Aufbau, sondern auch vom Inhalt an die Folgedateien überspielt wird.

Bitte hilft dem blonden Mädel

Dank Ihr lieben

Antwort 5 von coros

Hallo cnisdm,

Du musst die Variable "Dateiname" noch am Anfang des Makros deklarieren. Füge nach

Sub Alle_CSV_Dateien_oeffnen()


eine Leerzeile ein und trage dort

Dim Dateiname As String


ein. Damit hast Du die Variable deklariert.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von cnisdm

Hurra ich habe es fast geschaft...
der u.g. Code ist mit einigen Korrektuten meinerseits nun nahezu perfekt...

Option Explicit

Sub Alle_CSV_Dateien_oeffnen()
Dim CSV_Dateiname As String, Pfad As String
Application.ScreenUpdating = False
Pfad = "C:\\Dein Ordner\"
CSV_Dateiname = Dir(Pfad & "*.csv")
Do While CSV_Dateiname <> ""
Workbooks.Open Pfad & CSV_Dateiname
CSV_Dateiname = Dir
Loop
End Sub

C:\\Dein Ordner\ ist Der Ordner in dem die csv Datei enthalten sind.

Nun zu der Frage:
II. Das Tabellenblatt: soll heißen wie der Inhalt der Zelle A1
III. Der Dateiname: wie der Inhalt der Zelle C7.

Danke und Kuss an Oliver + All die Anderen

Antwort 7 von coros

Hallo cnisdm,

sorry, so ganz verstehe ich das nicht.
In dem Makro gibt es keine Angabe des Tabellenblattes. Warum soll dann der Tabellenblattname, den es ja nirgneds gibt, aus Zelle A1 stammen?
Der Dateiname kann nicht aus einer Zelle kommen, da dieser aus der Do While Anweisung erzeugt wird. Somit wird bei jedem Durchlauf der Name automatisch erzeugt und in Variable "CSV_Dateiname" geschrieben. Daher auch dieser Wunsch etwas unverständlich.

Du musst wohl etwas Aufklärung betreiben.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von cnisdm

hallo oliver,

achte nicht mehr auf den o.g Code, da dieser Code die Antwort auf meine erste Frage ist.

ich möcht nun gerne eine Lösung für die beiden letzen zwei Fragen bekommen, die da lauten

II. Das Tabellenblatt: soll heißen wie der Inhalt der Zelle A1
III. Der Dateiname: wie der Inhalt der Zelle C7
.

Anschließend kann ich ja die Makros aus alle drei Fragen zusammenfühgen. Dann hätte ich meine Arbeitsschritte automatisiert oder?
ich bin neu hier(BEGINNER+Blond)

Antwort 9 von coros

Hallo cnisdm,

zu II.)
Dim Blattname As String
Blattname = Range("A1")


Zu III.)
Dim Dateiname As String
Dateiname = Range("C7")


Ich hoffe, das reicht Dir. Ansonsten benötigt man etwas mehr Hintergrundwissen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: