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

ThisWorkbook.Name ohne .xls

Forumthread: ThisWorkbook.Name ohne .xls

ThisWorkbook.Name ohne .xls
Jörg-HH
Guten Abend zusammen,
ich möchte in einem GetSaveAsFilename den aktuellen Dateinamen einfließen lassen, aber ohne die Endung.
Wenn ich nur ThisWorkbook.Name verwende, erhalte ich eine Konstruktion mit doppeltem .xls und außerdem in Anführungszeichen eingeschlossen. Wie kann ich das verhindern?
Danke für'n Tip...
Jörg
Anzeige
benutze Left(...) mit Len(..)-4
08.07.2009 22:35:31
Matthias
Hallo
probier mal
Sub MySheetName()
Application.GetSaveAsFilename (Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4))
End Sub
Gruß Matthias
fast - nur dann fehlt .xls am Ende auch...
08.07.2009 22:39:55
Jörg-HH
Hi Matthias
so sieht das aus:
FileSaveNameAnbieter = Application.GetSaveAsFilename(InitialFileName:=(Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)) & " " & strAnbieterName, FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Dateiname für die Ausschreibung")
Warum is denn die "richtige" Endung plötzlich wech...?
Anzeige
AW: fast - nur dann fehlt .xls am Ende auch...
08.07.2009 22:55:55
Matthias
Hallo
Sub xyz()
Dim strAnbieterName As String, FileSaveNameAnbieter As String
strAnbieterName = "Herber"
FileSaveNameAnbieter = Application.GetSaveAsFilename(InitialFileName:=(Left(ThisWorkbook.Name,  _
Len(ThisWorkbook.Name) - 4)) & " " & strAnbieterName, FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Dateiname für die Ausschreibung")
End Sub
Du setzt doch schon den Filter für Dateityp. was willst Du noch ? Mehr ist doch nicht nötig
Userbild
Anzeige
wie ich das auch drehe - es wird nicht gespeichert
09.07.2009 09:22:02
Jörg-HH
Moin Matthias
mit nur ThisWorkbook.Name erhalte ich eine Konstruktion wie (einschließlich der Anführungszeichen)
"MeineDatei.xls Herber.xls"
und das wird nicht gespeichert.
Mit deiner Left..usw Schreibweise erscheint im Speichern-Dialog
MeineDatei Herber
so wie in deiner Abbildung. Im Feld Dateityp steht auch erwartungsgemäß xls - beim Klick auf den Speichern-Button wird aber nicht gespeichert.
Auch wenn ich dies bastel
InitialFileName:=(Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)) & " " & strAnbieterName & " " & ".xls",
wird nicht gespeichert.
Woran mag das liegen...?
Anzeige
AW: wie ich das auch drehe - es wird nicht gespeic
09.07.2009 09:32:44
Matthias
Hallo
Das liegt an GetSaveAsFilename
Hast Du schon mal die Hilfe benutzt?
Userbild


Gruß Matthias
analoge Konstruktion klappt, nur diese nicht
09.07.2009 09:51:50
Jörg-HH
...ja - "zeigt das Dialogfeld an, ohne was zu speichern". Das muß dann der Benutzer selber tun, indem er auf Speichern klickt.
Mit der gleichen Konstruktion bekomme ich an anderen Stellen des Codes problemlos was gespeichert, zB dies:
FileSaveName1 = Application.GetSaveAsFilename(InitialFileName:=ProjName & " Kalk " & TPName & " 1_DL", FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Kalkulations-Datei für Rücklauf der Ausschreibung " & ProjName & " erstellen:")
If FileSaveName1 False Then
ActiveWorkbook.SaveAs FileSaveName1
Else
Exit Sub
End If
Seinerzeit hatte ich mal ein ähnliches Problem, weil ich statt 1_DL zunächst dort 1.DL stehen hatte. Nach Ersetzen des . durch _ war der Spuk vorbei.
In diesem Fall hier aber steht ja nirgendwo ein Punkt, den Excel mißverstehen könnte...
Anzeige
bei mir klappt alles
09.07.2009 10:25:33
Matthias
hallo
Userbild
bei klappt es alles ohne Probleme.
Sub test()
On Error Resume Next
Dim FileSaveName1  As String
Dim ProjName As String
Dim TPName As String
ProjName = "MeinProjekt"
TPName = "Herber"
FileSaveName1 = Application.GetSaveAsFilename(InitialFileName:=(Left(ThisWorkbook.Name, _
Len(ThisWorkbook.Name) - 4)) & " " & ProjName & " Kalk " & TPName & " 1_DL", FileFilter:=" _
Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Kalkulations-Datei für Rücklauf der Ausschreibung " & ProjName & " erstellen:")
ActiveWorkbook.SaveAs FileSaveName1
End Sub
keine Ahnung warum das bei Dir nicht funzt. Ich hab XL2000
Ich lass es mal "offen"
Gruß Matthias
Anzeige
Fehler gefunden... :-)))
09.07.2009 10:20:00
Jörg-HH
Hi Matthias,
ich weiß, warum nicht gespeichert wurde: Es fehlte die Anweisung dazu, was passieren soll, wenn der Speichern-Button gedrückt wird...
If FileSaveNameAnbieter False Then
ActiveWorkbook.SaveAs FileSaveNameAnbieter
Else
Exit Sub
End If
...wie blöd von mir...
Danke für deinen Tip von gestern Abend. Das Len kannte ich nicht. Sowas gibt's ja in Excel auch, aber siehe Level... VBA nich so dolle ;-)
Schönen Tag noch!
Jörg
Anzeige
alles klar ;o) oT
09.07.2009 10:29:25
Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

ThisWorkbook.Name ohne .xls


Schritt-für-Schritt-Anleitung

Um den Namen der aktuellen Arbeitsmappe ohne die Dateiendung .xls in einem GetSaveAsFilename-Dialogfeld zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeineDatei.xls)“ > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub MySaveAs()
        Dim FileSaveName As String
        FileSaveName = Application.GetSaveAsFilename( _
            InitialFileName:=Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4), _
            FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", _
            Title:="Dateiname für die Ausschreibung")
    
        If FileSaveName <> "False" Then
            ActiveWorkbook.SaveAs FileSaveName
        End If
    End Sub
  4. Führe das Makro aus, um den Dialog zu öffnen.


Häufige Fehler und Lösungen

  • Problem: Die Rückgabe von GetSaveAsFilename ist "False".

    • Lösung: Stelle sicher, dass die If-Bedingung korrekt ist. Es muss überprüft werden, ob der Benutzer auf „Speichern“ geklickt hat.
  • Problem: Der Dateiname enthält Anführungszeichen oder unerwünschte Endungen.

    • Lösung: Stelle sicher, dass du die Funktion Left(...) und Len(...) korrekt anwendest, um die Dateiendung korrekt zu entfernen.

Alternative Methoden

Wenn du die Endung .xls nicht manuell entfernen möchtest, kannst du auch die Replace-Funktion verwenden:

Sub AlternativeSaveAs()
    Dim FileSaveName As String
    FileSaveName = Application.GetSaveAsFilename( _
        InitialFileName:=Replace(ThisWorkbook.Name, ".xls", ""), _
        FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", _
        Title:="Dateiname für die Ausschreibung")

    If FileSaveName <> "False" Then
        ActiveWorkbook.SaveAs FileSaveName
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du ThisWorkbook.Name in verschiedenen Kontexten verwenden kannst:

  1. Einfaches Speichern:

    Sub SaveWorkbook()
        Dim fileName As String
        fileName = Application.GetSaveAsFilename( _
            InitialFileName:=ThisWorkbook.Name, _
            FileFilter:="Excel-Dateien (*.xls), *.xls")
    
        If fileName <> "False" Then
            ActiveWorkbook.SaveAs fileName
        End If
    End Sub
  2. Mit zusätzlichem Text:

    Sub SaveWithAdditionalText()
        Dim additionalText As String
        additionalText = "Export"
        Dim fileName As String
        fileName = Application.GetSaveAsFilename( _
            InitialFileName:=Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) & " " & additionalText, _
            FileFilter:="Excel-Dateien (*.xls), *.xls")
    
        If fileName <> "False" Then
            ActiveWorkbook.SaveAs fileName
        End If
    End Sub

Tipps für Profis

  • Nutze die On Error Resume Next-Anweisung, um Fehler im Code elegant zu handhaben, besonders wenn du mit Dateispeicheroperationen arbeitest.
  • Experimentiere mit der Debug.Print-Anweisung, um den aktuellen Wert von Variablen zu überprüfen, bevor du kritische Operationen durchführst.
  • Vergewissere dich, dass du immer die richtige Excel-Version verwendest, um Kompatibilitätsprobleme zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Namen der aktiven Arbeitsmappe ohne .xls erhalten?
Verwende ActiveWorkbook.Name anstelle von ThisWorkbook.Name, wenn du den Namen der aktuell aktiven Arbeitsmappe benötigst.

2. Was muss ich beachten, wenn ich mit verschiedenen Excel-Versionen arbeite?
Achte auf Unterschiede in der VBA-Implementierung und teste deinen Code in der spezifischen Excel-Version, die du verwendest.

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