Leerzeichen im Dateinamen statt %20 in Excel
Schritt-für-Schritt-Anleitung
Um sicherzustellen, dass beim Speichern einer Excel-Datei anstelle von %20
für Leerzeichen auch tatsächlich ein Leerzeichen verwendet wird, kannst du den folgenden VBA-Code nutzen:
Sub n()
' Blatt_in_neue_Datei_kopieren
Dim Speicherpfad As String
Dim strFile As String
Dim I As Integer
Speicherpfad = ThisWorkbook.Path & "\"
ActiveSheet.Copy
strFile = Speicherpfad & "Brief " & ActiveSheet.Name & ".xls"
If Len(Dir(strFile)) > 0 Then
I = MsgBox("Datei bereits vorhanden, überschreiben?", vbYesNo)
If I = 6 Then
ActiveWorkbook.SaveAs Filename:=strFile
End If
Else
ActiveWorkbook.SaveAs Filename:=strFile
End If
ActiveWorkbook.Close True
End Sub
Stelle sicher, dass der Pfad korrekt ist und das \
nach ThisWorkbook.Path
hinzugefügt wird. Dies ist entscheidend, damit die Datei im richtigen Ordner gespeichert wird.
Häufige Fehler und Lösungen
-
%20 wird immer angezeigt: Achte darauf, dass du das Leerzeichen im VBA-Code korrekt eingibst. Wenn du ActiveWorkbook.SaveAs Filename:=Speicherpfad & "Brief " & ActiveSheet.Name & ".xls"
verwendest, stelle sicher, dass zwischen den Anführungszeichen ein echtes Leerzeichen ist.
-
Datei wird nicht im richtigen Ordner gespeichert: Überprüfe den Speicherpfad
. Das fehlende \
kann dazu führen, dass die Datei nicht im gewünschten Ordner abgelegt wird.
-
Keine Abfrage beim Überschreiben: Wenn die Abfrage nicht erscheint, könnte es an der Logik der If
-Abfrage liegen. Stelle sicher, dass die Datei tatsächlich existiert, bevor die Abfrage erfolgt.
Alternative Methoden
Falls der oben genannte Code nicht funktioniert, kannst du auch die Application.Substitute
-Funktion verwenden, um %20
durch ein Leerzeichen zu ersetzen:
ActiveWorkbook.SaveAs Filename:=Application.Substitute(Speicherpfad & "Brief %20" & ActiveSheet.Name & ".xls", "%20", " ")
Diese Methode ist nützlich, falls der Dateiname aus einer HTML-Quelle stammt und %20
fälschlicherweise eingefügt wurde.
Praktische Beispiele
Hier ist ein Beispiel, das zeigt, wie du eine Excel-Datei mit einem benutzerdefinierten Namen speicherst:
Sub SpeichernMitBenutzername()
Dim Benutzername As String
Benutzername = InputBox("Bitte geben Sie Ihren Namen ein:")
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Brief " & Benutzername & ".xls"
End Sub
In diesem Beispiel wird der Benutzer nach seinem Namen gefragt, und die Datei wird entsprechend gespeichert, ohne dass %20
angezeigt wird.
Tipps für Profis
- Nutze die
Trim
-Funktion, um unerwünschte Leerzeichen am Anfang oder Ende von Strings zu entfernen.
- Speichere immer eine Sicherungskopie deiner Datei, bevor du neue Makros ausprobierst.
- Verwende die
Debug.Print
-Anweisung, um den Wert von Variablen während der Ausführung zu überprüfen.
FAQ: Häufige Fragen
1. Warum wird %20 anstelle eines Leerzeichens angezeigt?
Das %20
ist eine Kodierung, die häufig in URLs oder HTML verwendet wird, um Leerzeichen darzustellen. Achte darauf, dass du in deinem VBA-Code direkte Leerzeichen verwendest.
2. Kann ich diesen Code auch in Excel 2010 verwenden?
Ja, der Code funktioniert auch in Excel 2010 und allen neueren Versionen, solange die VBA-Funktionalität unterstützt wird.
3. Was kann ich tun, wenn die Abfrage zum Überschreiben nicht erscheint?
Stelle sicher, dass die Abfrage-Logik korrekt implementiert ist und dass die Datei tatsächlich im Zielverzeichnis existiert.
4. Wie kann ich verhindern, dass mein Makro bei Fehlern stoppt?
Du kannst die Fehlerbehandlung mit On Error Resume Next
einfügen, um sicherzustellen, dass dein Makro auch bei auftretenden Fehlern weiterläuft.