Registriert seit: 23.04.2020
Version(en): 2013
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
Registriert seit: 06.09.2016
Version(en): 2016
Hallo Versuchnix alter Gallier,
poste doch mal die entscheidenden Teile deines Codes.
Wie sieht Dein Save-Befehl aus?
Gruß,
Lutz
Registriert seit: 23.04.2020
Version(en): 2013
Hallo,
ich habe doch einen Auszug aus meinem Makro beigefügt (nach den drei Doppelpunkten ...)
Registriert seit: 06.09.2016
Version(en): 2016
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
Registriert seit: 23.04.2020
Version(en): 2013
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
Registriert seit: 06.09.2016
Version(en): 2016
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
Registriert seit: 23.04.2020
Version(en): 2013
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
Registriert seit: 06.09.2016
Version(en): 2016
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