Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro zum Erstellen einer csv-Datei
#1
Hallo,

ich habe eine kleine EXCEL-Datei. Aus dieser werden per Makro einzelne Zeilen kopiert und in neue Dateien eingefügt, die als csv-Datei unter vorgegebenen Namen abgespeichert werden. Die csv-Dateien müssen dann in einer anderen Anwendung weiterverarbeitet werden.

Das Kopieren und die Dateibenennung funktionieren. Auch erhalten die Dateien die Endung .csv. Die Dateien werden aber im Dateityp Excel-Arbeitsmappe (*.xlsx) abgespeichert. Ich bentötige aber zwingend csv.

Auszu aus meinem Makro:


....
For i = ersteZeile To letzteZeile
        If Cells(i, 1) = "" Then
            i = i + 1
        End If
       
        dateiname = Cells(i, 2).Value & ".csv"
       
        dateiname = Replace(dateiname, "*", "-")
        dateiname = Replace(dateiname, "\", "-")
        dateiname = Replace(dateiname, "/", "-")
        dateiname = Replace(dateiname, "?", "-")
       
             
       
        neuerpfad = pfad & "\" & Dateiname


...

Was muss ich ändern, damit auch der Dateityp "csv" steht?

Danke

Viele Grüße

Versuchnix
Antworten Top
#2
Hallo Versuchnix alter Gallier,

poste doch mal die entscheidenden Teile deines Codes.
Wie sieht Dein Save-Befehl aus?

Gruß,
Lutz
Antworten Top
#3
Hallo,

ich habe doch einen Auszug aus meinem Makro beigefügt (nach den drei Doppelpunkten ...)
Antworten Top
#4
Hallo Versuchnix,

aber das ist doch nur der Teil, der die Zellinhalte in Dateinamen inkl. Pfad umwandelt.

Irgendwo muss es doch einen Befehl Worbook.SaveAs o.ä. geben. Erst hier wird final festgelegt, in welchem Format Deine Datei wirklich gespeichert wird.

Gruß,
Lutz
Antworten Top
#5
Hallo,

jetzt das Makro mit dem Speicher-Befehl
For i = ersteZeile To letzteZeile
        If Cells(i, 1) = "" Then
            i = i + 1
        End If
       
        dateiname = Cells(i, 2).Value & ".csv"
       
        dateiname = Replace(dateiname, "*", "-")
        dateiname = Replace(dateiname, "\", "-")
        dateiname = Replace(dateiname, "/", "-")
        dateiname = Replace(dateiname, "?", "-")
       
             
       
        neuerpfad = pfad & "\" & dateiname
       
        ActiveSheet.Cells(i, 1).Select
        d = Range(Selection, Selection.End(xlDown).Rows).Rows.Count - 2
       
       
        If Cells(i + 1, 1) = "" Then
        ActiveSheet.Range(Cells(i, 3), Cells(i + d, 7)).Copy
        Else
        ActiveSheet.Range(Cells(i, 3), Cells(i, 7)).Copy
       
        End If
       
        Workbooks.Add
        Range("A1").PasteSpecial
       
       
       
        ActiveWorkbook.SaveAs Filename:=neuerpfad
       
       
        ActiveWorkbook.Close



Viele Grüße Versuchnix
Antworten Top
#6
Hallo Versuchnix,

ich habe jetzt versucht Deinen Code nachustellen. Bei mir kommt eine .csv-Datei bei raus.

Erste Möglichkeit:
Ändere Deinen Save-Zeile in
ActiveWorkbook.SaveAs Filename:=neuerpfad, FileFormat:=xlCSVUTF8
Das ist zumindest das, was mir mein Makrorecorder als FileFormat ausspuckt.

Zweite Möglichkeit:
Dein Wert für neuerpfad wird durch die replace-Befehle verwurschtelt.
Entweder Du schaust Dir im Einzelschriffmodus an, wie die Variable vor dem Speichern aussieht oder du fügst ein
Debug.Print neuerpfad
nach der Zeile
neuerpfad = pfad & "\" & dateiname
ein.

Gruß,
Lutz
Antworten Top
#7
Hallo,

wenn ich den Befehl
ActiveWorkbook.SaveAs Filename:=neuerpfad,

ändere in
ActiveWorkbook.SaveAs Filename:=neuerpfad, FileFormat:=xlCSVUTF8

erhalte ich folgende Fehlermeldung: xlCSVUTF8 "Fehler beim Kompilieren Variable nicht definiert".


Ich habe es daraufhin versucht mit
ActiveWorkbook.SaveAs Filename:=neuerpfad, FileFormat:=xlCSV (also ohne den Zusatz UTF8)
Es wird dann auch die neue Datei in der gewünschten Struktur erstellt, allerdings mit folgender Meldung:

Sollen Ihre Änderungen in ...csv gespeichert werden?

Wenn ich "Speichern" oder "Nicht speichern" drücke, erfolgt die Speicherung-  Beim nächste Datensatz wird die gleichen Frage gestellt.

Ich habe über den Makrolauf alle Dateien erstellen lassen und jeweils mit Speichern oder Nicht speichern bestätigt. Es wurden alle Dateien mit csy-Endung und dem Datei-Typ csv erstellt. Allerdings wurden die Einträge einer Zeile als string abgespeichert und nicht mehr in fünf nebeneinander liegende Zellen, wie gewünscht.

Drücke ich statt auf "Speichern" oder "Nicht speichern" auf "Abbrechen" bleibt die erste erstellte csv-Datei in der gewünschten Struktur und mit dem Dateityp bestehen. Das Makro läuft dann aber nicht mehr weiter und folgende Fehlermeldung erscheint "Laufzeitfehler (6) Überlauf"

Gruß

Versuchnix
Antworten Top
#8
Hallo Versuchnix,

hast Du mal den Code zum Speichern als .csv aufgezeichnet?
Was steht dann bei Dir im Code?

Wa ssagt die zweite Möglichkeit?
Hast Du deinen Code mal im Einzelschritt laufen lassen?

Gruß,
Lutz
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste