Clever-Excel-Forum

Normale Version: Autom. Verschiebung Inhalt: CSV -> XLS -> PDF (per VBA Makro?)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

gewünscht ist ein automatisierter Transfer des Inhaltes einer CSV-Datei in eine vorgefertigte Excel-Datei mit anschließender Speicherung als PDF-Datei. Ich dachte eventuell an eine Umsetzung per VBA Makro, habe dahingehend aber keine Erfahrungen.

Kurze Übersicht zur Prozesskette:
  1. Rohdatei im CSV-Format
  2. Der Inhalt dieser CSV-Datei soll automatisiert in eine vorgefertigte Excel-Datei fließen
    (vorgefertigt = formatierte Überschriftenzeile bereits eingefügt; nach Einfügen der Daten aus CSV-Datei automatisierte Spalten-/Zeilenanpassung erwünscht (zunächst aber nur nice-to-have Attribut)
  3. Anschließende automatische Speicherung der Excel-Datei als PDF-Datei
    (Name gerne fortlaufend mit bspw. Datum und Uhrzeit)
Die grundlegende Frage lautet allerdings: Ist diese Prozesskette in automatisierter Form überhaupt möglich?

Über Ideen und Vorschläge wäre ich sehr dankbar! Smile

Gruß,
Marcel
Hallo,

es gibt mindestens 4 verschiedene Wege, wie man eine csv-Datei nach xl importieren kann. Je nach Datenformat, insbesondere bei Datumsformate gibt es regelmäßig/heufig Anpassungsbedarf.

Zusammengafasst: Im Prinzip ist der von dir vorgeschlagen Weg recht gut machbar, aber es gibt so viele "Fallstricke", dass ohne weitere Infos / Beispiele das kaum zu programmieren ist.

Auch FRagen, wo liegen die cvs (alle in einem Ordner?) sollten bekannt sein.

mfg
(10.06.2016, 09:34)gwspom schrieb: [ -> ]Ich dachte eventuell an eine Umsetzung per VBA Makro, habe dahingehend aber keine Erfahrungen.

Dann wäre die Beschäftigung eines Profis geeignet.
(10.06.2016, 10:50)Fennek schrieb: [ -> ]Hallo,

es gibt mindestens 4 verschiedene Wege, wie man eine csv-Datei nach xl importieren kann. Je nach Datenformat, insbesondere bei Datumsformate gibt es regelmäßig/heufig Anpassungsbedarf.

Zusammengafasst: Im Prinzip ist der von dir vorgeschlagen Weg recht gut machbar, aber es gibt so viele "Fallstricke", dass ohne weitere Infos / Beispiele das kaum zu programmieren ist.

Auch FRagen, wo liegen die cvs (alle in einem Ordner?) sollten bekannt sein.

mfg


Hallo Fennek,

vielen Dank für deine schnelle Antwort. Die Daten in der CSV-Datei sind relativ simpel gehalten: Kein besonderes Format wie bspw. Uhrzeiten o.Ä. (Format steht in allen Spalten auf "Standard"). Die Tabelle hat stets die gleiche Breite (15 Spalten). Die Datei würde als E-Mail Anhang kommen, allerdings könnte man zu Testzwecken bzw. für eine Vereinfachung auch von demselben Ordner ausgehen.

Danke & LG,
Marcel
Hallo,

es gibt Erfahrungen mit Fragesteller, die angeben wenig/kein Kenntnisse in vba zu haben. Gefühlt geht es in 60% der Fälle schief, wenn man einen vba-code liefert. Mal schauen, wie das bei dir ist.

Im Fenster sind zwei vba-Programme: das zweite habe ich mit dem Rekorder aufgezeichnet, das erste daraus abgeleitet.

Der Code wandelt alle csv in einem Ordner in pdf im selben Ordner um. Mögliche Probleme wie Datums-Formate werden nicht berücksichtigt.

Wenn die csv per email-Anhang kommen, wäre es auch möglich, sie direkt aus der Outlook-Inbox abzuholen, aber das kann ich nicht programmieren.

Gibt mal ein feedback, aber nicht einfach "Es geht nicht!", sondern mit aussagekräftige Infos. (kleine Anpassungen im Code musst du noch vornehmen, wenn du damit nicht klarkommmst ...)


Code:
Sub test()
sPath = "c:\temp\"

sFile = Dir(sPath & "T*.csv")

Do While Len(sFile)
Tx = Split(sFile, ".")(0)
   Workbooks.Open Filename:=sPath & sFile
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
       sPath & Tx & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True _
       , IgnorePrintAreas:=False, OpenAfterPublish:=False
   ActiveWindow.Close
sFile = Dir
Loop

End Sub


Sub Makro1()
'
' Makro1 Makro per Rekorder aufgezeichnet
'

'
   Workbooks.Open Filename:="C:\Temp\Test2.csv"
   ChDir "C:\Temp"
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
       "C:\Temp\Test2.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True _
       , IgnorePrintAreas:=False, OpenAfterPublish:=True
   ActiveWindow.Close
End Sub
Hallo Fennek,

vielen Dank für deine Antwort. Ich war bis gestern im Urlaub, daher meine späte Rückmeldung.

Kurz zur Vorgehensweise wie ich deinen VBA-Code eingefügt habe:
  • Rohdatei (CSV) geöffnet
  • Alt + F11 gedrückt -> Fenster Entwicklungsumgebung VBA öffnet sich
  • Projekt-Explorer geöffnet
  • Rohdatei markiert (blau hinterlegt)
  • Alt + E + M -> neues (leeres) Modul wird hinzugefügt
  • deinen Code (Erster, abgeleitet) eingefügt
  • gespeichert und Visual Basic mit Alt + F4 geschlossen
Wenn ich nun die modifizierte Datei öffne, passiert automatisiert (noch) nichts.
Gehe ich nun auf die Registerkarte "Entwicklertools" und klicke in der Gruppe "Code" auf "Makros" werden mir leider keine Makros angezeigt.

Woran kann das liegen? Was habe ich falsch gemacht?

Danke & LG,
Marcel
Hallo Marcel,

ich glaube nicht, dass das Makro in einer csv-Datei läuft. Kopiere das Makro in eine leere Excelmappe, speichere es mit der Endung xlsm bsz. xlsb ab und starte das Makro.
Vielen Dank Steffl! Nun funktioniert es Smile
Es wird automatisch aus der CSV-Datei im Temp-Ordner eine PDF-Datei erstellt.

Nun würde ich gerne Schritt #2 meiner ursprünglichen Prozesskette hinzufügen:

Zitat:Kurze Übersicht zur Prozesskette:
  1. Rohdatei im CSV-Format
  2. Der Inhalt dieser CSV-Datei soll automatisiert in eine vorgefertigte Excel-Datei fließen
    (vorgefertigt = formatierte Überschriftenzeile bereits eingefügt; nach Einfügen der Daten aus CSV-Datei automatisierte Spalten-/Zeilenanpassung erwünscht

  3. Anschließende automatische Speicherung der Excel-Datei als PDF-Datei
    (Name gerne fortlaufend mit bspw. Datum und Uhrzeit)
Kann mir jemand hierzu einen VBA-Code basteln?
Danke & LG,
Marcel
Keiner eine Idee?! Sad
Hallo,

wenn der oben genannte Code funktioniert, dann steht der Inhalt der csv-Datei in einem Arbeitsblatt. Dies ist aber ein neues, leeres Blatt. Eine "Vorformatierung" kann es nicht geben.

D.h., alle Formatierungen bzw Überschriften müssen gesetzt bzw eingefügt werden.

mfg
Seiten: 1 2