Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro - Mit aktuellem File Namen speichern

Forumthread: Makro - Mit aktuellem File Namen speichern

Makro - Mit aktuellem File Namen speichern
13.12.2005 15:03:17
Alex
Hallo !
Ich habe ein Makro das mir eine Datei umwandelt und dann als csv speichert !
Das funktioniert auch aber ich möchte das Makro für mehr als eine einzige Datei benutzen und das Makro soll mir dann immer eine CSV Datei erstellen die den gleichen Namen hat wie die Excel Datei von der das CSV erzeugt wurde.
Natürlich hinten mit .csv
z.B.: Ursprungdatei: test.xls
Wenn ich das Makro ausführe soll es mir eine datei erzeugen die test.csv heißt !
Im Moment ist es leider so das das Makro immer den Namen der Datei benutzt mit der ich das Makro aufgezeichnet habe !
Hier der Code:

Sub Translate()
' Translate Makro
' Makro am 13.12.2005 von dan aufgezeichnet
' Tastenkombination: Strg+e
Cells.Replace What:="" & Chr(10) & "", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Select
With Selection
.VerticalAlignment = xlCenter
.WrapText = False
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("H18").Select
ChDir "I:\Folder\Stücklisten"
ActiveWorkbook.SaveAs Filename:="I:\Folder\Stücklisten\PH531-1528.csv", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub

Wär toll wenn mir jemand helfen könnte !
Wie kann ich das Makro in jeder beliebigen Datei benutzen und wie kann ich es auf eine Excel Schaltfläche in der Schaltfläche Zeile legen ?
Gruß -ALEX-
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro - Mit aktuellem File Namen speichern
13.12.2005 15:07:44
Alexander
Hallo Alex.
Ändere folgende Zeile:
ActiveWorkbook.SaveAs Filename:="I:\Folder\Stücklisten\PH531-1528.csv", _
FileFormat:=xlCSV, CreateBackup:=False
in diese Zeile:
ActiveWorkbook.SaveAs Filename:= Replace(LCase(ActiveWorkbook.FullName),"csv","xls"), _
FileFormat:=xlCSV, CreateBackup:=False
Das sollte es eigentlich tun.
Gruß, Alex.
Anzeige
AW: Makro - Mit aktuellem File Namen speichern
13.12.2005 15:15:38
Alex
Hi !
Jetzt überschreibt er mir die xls ?
Er soll mir die Datei neu anlegen mit dem gleichen Dateinamen aber csv ?!
Geht das ?
Gruß -Alex-
AW: Makro - Mit aktuellem File Namen speichern
13.12.2005 15:21:25
Alexander
Der Code überschreibt Dir Deine xls-Datei nicht.
ActiveWorkbook.Fullname ergibt den Vollständigen Dateinamen und -Pfad deiner xls-Datei.
LCase sorgt dafür, dass alles klein geschrieben wird.
Replace sorgt dafür, dass im Dateinamen die Endung "xls" durch "csv" ersetzt wird.
SaveAs sorgt dafür, dass eine NEUE Datei angelegt wird.
Das Replace bezieht sich also nicht auf die Dateien, sondern nur auf den String mit dem Dateinamen!
Gruß, Alex.
Anzeige
AW: Makro - Mit aktuellem File Namen speichern
13.12.2005 15:43:21
Alex
sorry, ich möchte Dich nicht ärgern, aber ich habs ausprobiert !
Als Ergebniss bekomme ich die umgewandelte Datei im als xls !!!?
Er fragt mich sogar noch ob ich die Datei wirklich überschreiben will !!!?
Oder hab ich da was falsch gemacht .. ich hab nur die Zeilen ersetzt die Du mir gesagt hast ! ?
Anzeige
AW: Makro - Mit aktuellem File Namen speichern
13.12.2005 16:06:30
Alexander
Sorry. Ich konnte das ganze nicht ausprobieren, war einfach davon ausgegangen, dass es geht, weil es immer so geht, aber anscheinend ist das csv-Format ein bisschen speziell.
Damit kenn ich mich leider nicht aus.
Man könnte das ganze aber auch noch so machen:

Sub Translate()
Dim fso as Object
Set fso = CreateObject("Scripting.FileSystemObject")
Range("H18").Select
ChDir "I:\Folder\Stücklisten"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ActiveWorkbook.FullName, _
FileFormat:=xlCSV, CreateBackup:=False
fso.CopyFile ActiveWorkbook.FullName, Replace ActiveWorkbook.FullName,"xls","csv",,,vbTextCompare
set fso = Nothing
ActiveWorkbook.SaveAs ActiveWorkbook.FullName, _
FileFormat:=xlNormal, CreateBackup:=False
Application.DisplayAlerts = True
End Sub

Ich hab keine Ahnung, ob das geht, aber nen Versuch wär's wert.
Gruß, Alex.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makro zur Speicherung von Excel-Dateien als CSV


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das eine Excel-Datei als CSV speichert und den gleichen Namen verwendet, folge diesen Schritten:

  1. Öffne Excel und gehe zu "Entwicklertools" > "Visual Basic".

  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf "VBAProject (deinDateiname)" klickst und "Einfügen" > "Modul" auswählst.

  3. Füge den folgenden VBA-Code in das Modul ein:

    Sub SpeichernAlsCSV()
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Dim csvDateiname As String
    
        ' Setze den Pfad und den Dateinamen
        csvDateiname = Replace(ActiveWorkbook.FullName, ".xls", ".csv")
    
        Application.DisplayAlerts = False
        ' Speichere die Datei als CSV
        ActiveWorkbook.SaveAs Filename:=csvDateiname, FileFormat:=xlCSV, CreateBackup:=False
        Application.DisplayAlerts = True
    
        Set fso = Nothing
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Weise das Makro einer Schaltfläche zu, indem du mit der rechten Maustaste auf die Schaltfläche klickst und "Makro zuweisen" wählst.


Häufige Fehler und Lösungen

Problem: Das Makro überschreibt die Originaldatei.
Lösung: Stelle sicher, dass der Dateiname im SaveAs-Befehl korrekt angepasst wird, sodass die Endung von .xls auf .csv geändert wird.

Problem: Excel fragt, ob die Datei überschrieben werden soll.
Lösung: Überprüfe, ob die Datei bereits im CSV-Format existiert. Wenn ja, ändere den Code, um die Datei nur zu speichern, wenn sie nicht existiert.


Alternative Methoden

Eine alternative Methode zur Speicherung als CSV ist die Verwendung eines Makros mit dem FileSystemObject. Hier ist ein Beispiel:

Sub SpeichernAlsCSVAlternative()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim originalDateiname As String
    originalDateiname = ActiveWorkbook.FullName

    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=originalDateiname, FileFormat:=xlCSV, CreateBackup:=False
    fso.CopyFile originalDateiname, Replace(originalDateiname, ".xls", ".csv"), True
    Application.DisplayAlerts = True

    Set fso = Nothing
End Sub

Diese Methode erstellt zusätzlich eine Kopie der Datei im CSV-Format.


Praktische Beispiele

Angenommen, deine Excel-Datei heißt Datenanalyse.xls. Nach dem Ausführen des Makros wird eine neue Datei Datenanalyse.csv im gleichen Verzeichnis erstellt. Achte darauf, dass du das Makro in einer .xls-Datei testest.


Tipps für Profis

  • Verwende Application.DisplayAlerts = False, um unerwünschte Dialogfelder zu vermeiden.
  • Teste das Makro in einer Kopie deiner Datei, um Datenverluste zu vermeiden.
  • Du kannst das Makro anpassen, um die CSV-Datei in einem spezifischen Ordner zu speichern, indem du den Pfad im Filename-Parameter des SaveAs-Befehls angibst.

FAQ: Häufige Fragen

1. Frage: Kann ich das Makro in Excel 2016 verwenden?
Antwort: Ja, das Makro ist mit Excel 2016 und späteren Versionen kompatibel.

2. Frage: Was kann ich tun, wenn das Makro nicht funktioniert?
Antwort: Überprüfe den Code auf Tippfehler und stelle sicher, dass die Datei im richtigen Format vorliegt. Teste auch, ob die Makros in Excel aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige