Excel VBA Speichern unter...?

1 Antwort

ActiveWorkbook.SaveCopyAs ("Tabellenvorlage" & InputBox("Dateinamen bitte eingeben: ") & ".xlsx")

Das speichert dann eine Kopie der Datei (ohne die Makros)

Wenn das Makro direkt beim Öffnen der Datei verwendet werden soll, muss das im VBA Editor zu "DieseArbeitsmappe" abgelegt werden:

Private Sub Workbook_Open()
ActiveWorkbook.SaveCopyAs ("Dateivorlage" & InputBox("Dateinamen bitte eingeben: ") & ".xlsx")
MsgBox "Dateivorlage wurde angelegt. Diese Datei wird nun geschlossen"
ActiveWorkbook.Close
End Sub

Ich würde es über die Kopie lösen. Wenn die Datei, in der das Makro steht, selbst genutzt wird, dann wird bei jedem Öffnen wieder das Makro durchlaufen. Man könnte dann zwar abfragen, ob der Dateiname verändert wurde, aber richtig praktisch ist das aus meiner Sicht nicht.

Wow super, danke. 
Weisst du auch, wie ich vorab den Speicherpfad angeben kann? 

Jetzt hab ich die Testtabelle.xlsm im Verzeichniss "Dokumente\Tabelle". Es speichert aber im Ordner "Dokumente" ab, also einen Unterordner und die neue Datei soll aber im selben Ordner sein. 

0
@DJBaem

wenn die Kopie immer genau da landen soll, wo auch das Original liegt, wäre es so möglich

namenserweiterung = InputBox("Bitte den Dateinamen eingeben:")
ActiveWorkbook.SaveCopyAs (ActiveWorkbook.Path & "\tabellenvorlage" & namenserweiterung & ".xlsx")
MsgBox "Dateivorlage wurde angelegt. Diese Datei wird nun geschlossen"
ActiveWorkbook.Close

Du kannst den Pfad, wenn es ein fester Wert sein soll, sonst einfach bei "tabellenvorlage" eintragen: "c:\users\hugo\vorlage" & ...

2
@Ninombre

Ich hab das Ganze jetzt so gemacht und es haut hin. Danke für deine Hilfe :)

Private Sub Workbook_Open()


Dim sPfad As String

sPfad = "C:\Users\DjBae\Documents\Tabelle\"

Application.Visible = False

ActiveWorkbook.SaveAs sPfad & ("Testtabelle_" & InputBox _
("Bitte gib deinen Name ein." & vbLf & vbLf & _
"Es wird automatisch eine neue Datei erstellt, welche mit '_DEINEM NAME' endet.") & ".xlsm")

frmVL.Show

End Sub
0
@DJBaem

Was allerdings doof ist, selbst wenn ich auf "Abbrechen" klicke, wird eine neue Datei erstellt, anstatt dass eine Fehlermeldung kommt oder so. :/

0
@DJBaem

dann musst du das noch getrennet abfragen:

Dim sPfad, namenszusatz As String

sPfad = "C:\Users\DjBae\Documents\Tabelle\"

namenszusatz = InputBox _
("Bitte gib deinen Name ein." & vbLf & vbLf & _
"Es wird automatisch eine neue Datei erstellt, welche mit '_DEINEM NAME' endet.")
Application.Visible = False

If namenszusatz = "" Then Exit Sub

ActiveWorkbook.SaveAs sPfad & ("Testtabelle_" & namenszusatz & ".xlsm")

Das Makro wird so allerdings auch später immer beim Öffnen durchlaufen und will einen neuen Namen. Um das abzufangen, kannst Du direkt zu Beginn den Namen prüfen

if activeworkbook.name<>... then exit sub.

bei den... muss den Name der Vorlage stehen. D.h. wenn die Datei schon einen Namenszusatz bekommen hat, wird das Makro beendet.

1
@Ninombre

Hat perfekt geklappt, danke :) 

Eine Frage habe ich aber noch:
Aktuell wird ja direkt beim Öffnen nach dem Name gefragt, sodass ja direkt eine neue Tabelle erstellt wird, in der man arbeitet.

Kann man hier irgendwas machen, sodass nachdem die neue Datei erstellt wurde, dieses Makro automatisch im neuen Sheet gelöscht wird?

Weil nehmen wir mal an, dass ich jetzt fertig bin mit meiner Arbeit in der Datei "Testtabelle_Benny.xlsm" zu arbeiten und schließe sie..
Will ich sie dann aber wieder öffnen, werde ich klarer weise wieder nach einem Name gefragt und arbeite automatisch in einer neuen Tabelle.

Kann man hier also irgendwie dafür sorgen, dass die neue Datei dieses Makro nicht ausführt?

LG
Benny

0
@DJBaem

Wenn Du die Makros in der neuen Datei nicht brauchst, dann speicher die Kopie einfach als xlsx ohne Makro ab

Dim sPfad, namenszusatz As String
sPfad = "C:\Users\DjBae\Documents\Tabelle\"
namenszusatz = InputBox _
("Bitte gib deinen Name ein." & vbLf & vbLf & _
"Es wird automatisch eine neue Datei erstellt, welche mit '_DEINEM NAME' endet.")
Application.Visible = False
If namenszusatz = "" Then Exit Sub
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs sPfad & ("Testtabelle_" & namenszusatz & ".xlsx")
Application.DisplayAlerts = True

0
@Ninombre

Als xlsx kann ichs nicht speichern, da ja andere Makros in der Mappe sind, die auch später noch genutzt werden müssen. :/

0

Was möchtest Du wissen?