Frage von sonny687, 55

Hallo Zusammen, ich muss den Inhalt einer CSV Datei im Format anpassen oder in eine Formatvorlage einfügen und das automatisch, sobald die Datei im Ordner ist?

Ich erstelle in einem Programm eine Export Datei im CSV Format, diese landet immer im gleichen Ordner. Ich muss die enthaltenen Adressen in eine Vorlage kopieren, Reihenfolge und Anordnung sind schon stimmig, erkannt werden müsste wie viele Zeilen gefüllt sind und das die erste Zeile beim kopieren und einfügen ausgelassen wird wegen der Spalten Bezeichnung - diese ändert sich. Toll wäre wenn dies immer automatisch passiert, sobald die Datei im Ordner abgelegt wird um den Zeitaufwand des hin und her Kopieren zu sparen. Falls möglich sollte erkannt werden, ob die Telefonummern eine führende Null haben und wenn nicht, diese sich einfügt. Ich arbeite an einem Win7 Pro Rechner und nutze Excel 2013.

Danke schonmal im Vorraus!

Expertenantwort
von Ninombre, Community-Experte für Excel, 33

Das Kopieren kann man sich mit einer Datenverbindung schon einmal sparen:

Ribbon Daten > externe Daten abrufen > aus Text

Dort die CSV Datei auswählen.

Import beginnen ab Zeile 2 (damit die Überschriften wegsind)
Getrennt und auf der nächsten Seite Semikolon
Rest der Einstellungen kann vermutlich so bleiben
Sobald Du den Ort festgelegt hast wohin die Daten geschrieben werden, ist die Verbindung schon fertig.

Danach auf Verbindungen gehen -> Eigenschaften und den Haken entfernen bei Dateinamen bestätigen. Dann braucht man die CSV beim Aktualisieren nicht immer wieder auszuwählen.

Die eingelesenen Daten kannst Du nach belieben Formatieren, das wird beim Aktualisieren nicht überschrieben.

Jetzt kann über ein Makro zum einen das Aktualisieren der Daten und das Setzen der 0 in der Telefonnummer erfolgen:

Sub dateneinlesen()
ActiveWorkbook.Connections("Mappe1").Refresh
For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row
If Left(Cells(i, 4).Value, 1) <> 0 Then Cells(i, 4).Value = 0 & Cells(i, 4).Value
Next
end sub

Mappe1 ist durch den konkreten Namen Deiner Datenverbindung zu ersetzen. In meinem Beispiel steht die Telefonnummer in Spalte D (das ist die ,4), was Du ggf. ändern musst. Ich hoffe, die Logik mit der führenden Null ist immer so einfach, denn die Schreibweise mit +49 oder (0176) würden durch das Davorstellen einer 0 ja falsch. Ggf. muss die Logik noch aufgebohrt werden

Das Makro kann man auch direkt beim Öffnen der Datei starten, also eine zweite sub dazu:
Private Sub Workbook_Open()
call dateneinlesen
End Sub

Der weitere Ablauf ist davon abhängig, was Du mit der Datei vorhast: Wenn diese weiter verschickt werden soll, dann würde ich den Inhalt kopieren und die Werte in eine neue Datei ablegen, sonst schickst Du die ganzen Makro/Datenverbindungskram mit, das macht sich nicht so gut.

Wenn Du das nur ausdruckst o.ä. kommt noch ein
activeworkbook.save als vorletzte Zeile ins Makro und fertig.

Was mit Excel/VBA allerdings nicht funktioniert ist eine Überwachung des Laufwerks.

Kommentar von maximilianus7 ,

nochn bisschen senf von mir: kann es sein, dass die nullen vor den telefonnummern in der csv zwar drin sind, aber beim einfügen ins excel verschwinden, weil das teil diese als numerische werte speichert? 

am besten alle zellen der zieltabelle komplett als text formatieren. kann auch in VBA gemacht werden. 

Kommentar von sonny687 ,

Danke für die Anmerkung. Die Nullen sind teilweise vorhanden und teilweise nicht.

Die CSV die ich erhalte besteht aus Adressen und Liferadressen die von Kunden über eine Onlineplattform selbst eingeben werden.

Ich muss diese passend machen um sie weiterleiten zu können.

Hast du oder habt ihr einen Tipp wo ich anfangen kann zu lesen um mich einzuarbeiten? Ich ersticke momentan in Informationen und weiss nicht wo ich anfangen soll um vor allem kurzfristig diese Thematik in den Griff zu bekommen.

Kommentar von Ninombre ,

Klappt der Rest denn oder hast Du mittlerweile eine andere Lösung für das Übernehmen der CSV nach Excel? Wäre wichtig welchen Lösungsweg man für die Telefonnummern verfolgt. Sind außer den Telefonnummern noch andere Daten zu bereinigen?

Antwort
von maximilianus7, 29

davon abgesehen, dass du keine konkrete frage gestellt hast: zum problem des automatischen starten der übernahme:

wie kommt die csv-datei in den ordner? läuft das erstellende programm auf dem lokalen rechner?

dann könntest du einfach ein batch script machen, was das programm mit dem export aufruft und dann excel

Keine passende Antwort gefunden?

Fragen Sie die Community