HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Forumbeitrag
Excel-Version des Fragestellers:
2022
Erfahrungslevel des Fragestellers:
VBA nur mit Recorder
tuska
15.07.2024 18:14:11
AW: Makro (bitte prüfen) - Aktives Blatt auf Desktop speichern
2Oberschlumpf

Hi,

Danke bei mir hat bereits zuvor alles funktioniert. :-)

Soferne ich Pfade kopiere werden bei mir in Total Commander 11.03 oder Everything 1.5.0.1383a (x64)
die Pfade IMMER mit einem abschließenden Backslash kopiert (ohne Anführungszeichen),
d.h. der vorherige Code würde bei mir IMMER funktionieren, und zwar
auch MIT Leerzeichen im Pfad und OHNE Anführungszeichen im Eingabefeld.

Jetzt habe ich den CODE noch auf Deinen Vorschlag hin geändert und er funktioniert ebenfalls PERFEKT!

Mein finaler Code lautet:

Sub Save_ACTIVE_SHEET_to_specified_PATH()


' https://www.herber.de/forum/messages/1984803.html - Topic "Makro (bitte prüfen) - Aktives Blatt auf Desktop speichern"
' https://www.herber.de/forum/messages/1984845.html - Next post - Solution from 15 July 2024
' -----------------------------------------------------------------------------------------------------------------------------

' English:
' 1. If the input field is left EMPTY after the macro is called, the Excel file is saved in the PATH,
' which was defined in the MACRO. EXAMPLE - 2nd line of the code ...: lstrStdPfad = "C:\Everything\Tests\"
' It is NOT necessary to enter the file extension, e.g. .xlsm!
'
' 2. If the input field is FILLED with a PATH after the macro is called - followed by a BACKSLASH '\',
' then the Excel file is saved in this path. It is NOT necessary to enter the file extension, e.g. .xlsm!
' It is also NOT necessary to put a path with spaces in inverted commas.
' -----------------------------------------------------------------------------------------------------------------------------

' German:
' 1. Wird nach Aufruf des Makros das Eingabefeld LEER gelassen, dann wird die Excel-Datei in jenem PFAD gespeichert,
' welcher im MAKRO definiert wurde. BEISPIEL - 2. Zeile im Code ...: lstrStdPfad = "C:\Everything\Tests\"
' Die Angabe der Dateierweiterung, zB .xlsm ist NICHT erforderlich!
'
' 2. Wird nach Aufruf des Makros das Eingabefeld mit einem PFAD - abschließend mit einem BACKSLASH '\' BEFÜLLT,
' dann wird die Excel-Datei in diesem Pfad gespeichert. Die Erfassung der Dateierweiterung, zB .xlsm ist NICHT erforderlich!
' Es ist auch NICHT erforderlich einen Pfad mit Leerzeichen in Anführungszeichen zu setzen.
' -----------------------------------------------------------------------------------------------------------------------------

Dim lstrStdPfad As String
lstrStdPfad = "C:\Everything\Tests\"
Path = InputBox("Enter the path in which the sheet is to be saved - the file name extension (.xl??) is automatically added according to the file format!")
If Mid(Path, 2, 1) <> ":" Then
Path = lstrStdPfad
End If
Select Case Right(Path, 1)
Case ""
GoTo ErrorHandler
Case Is <> "\"
Path = Path & "\"
End Select
ActiveSheet.Copy
On Error GoTo ErrorHandler
' ActiveWorkbook.SaveAs Filename:=path & ActiveSheet.Name => Excel 2003
' ActiveWorkbook.SaveAs Filename:=path & ActiveSheet.Name, FileFormat:=52 => Excel 2010: The file name extension can be omitted,
' https://www.herber.de/forum/archiv/1380to1384/1380461_Excel_2010_per_makro_tabellenblatt_in_neue_Datei.html => Excel adds them automatically according to the file format.
ActiveWorkbook.SaveAs Filename:=Path & ActiveSheet.Name, FileFormat:=52
ActiveWorkbook.Close Savechanges:=False
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox ("Saving was NOT successful! - Check the path...")
ActiveWorkbook.Close Savechanges:=False
Case Else
End Select
End Sub


Besten Dank für Deine Bemühungen!

Gruß,
Karl

PS:
Ich werde versuchen anderen Helfern noch zu antworten.
Konnte noch nicht alle Vorschläge prüfen, zB "Speichern auf Desktop" von User daniel.
An jene Profi-Unterstützer die hier mitlesen: Vielen herzlichen Dank für die vielen Vorschläge und die Unterstützung!
Als Antwort auf diesen Beitrag
Oberschlumpf
15.07.2024 17:17:17
AW: Makro (bitte prüfen) - Aktives Blatt auf Desktop speichern
Hi,

schön, freut mich, dass ich helfen konnte.

Eine kleine Verbesserung in deinem jetzigen Code hab ich noch:

änder diesen Code...


Case Is <> "\"
Path = "C:\Everything\Tests\"

...um in...


Case Is <> "\"
Path = Path & "\"


Denn...angenommen, du hast in der Inputbox wirklich einen gültigen Pfad eingetragen, z Bsp "D:\muss hier hin" der nun aber ganz anders ist als dein "C:\Everything\Tests\", dann wird mit deinem jetzigen Code aus "D:\muss hier hin" trotzdem wieder "nur" "C:\Everything\Tests\"

Der einzige Fehler bei "D:\muss hier hin" ist ja nur, dass der abschließende \ fehlt.
Und mit meiner Korrektur wird an "D:\muss hier hin" nur noch das fehlende \ angehängt.

Jetzt sollte wirklich alles funktionieren, oder?

Ciao
Thorsten
Folgenachrichten
Antwort auf Beitrag erstellen

Beispieldatei hochladen