2016-06-20 3 views
0

Ich versuche, eine Datei mit VBA zu erstellen, benennen Sie die Datei und betten Sie ein Datum in den Dateinamen ein. In Mac Excel 2011, wenn „wb“ die Referenz für den neu erstellen Arbeitsmappe, wäre es kein Problem ...Wie kann ich eine Funktion den FileName-Parameter einer Datei ... SaveAs?

zu sagen gewesen
wb.SaveAs Filename:="Old_New_Cust" & Cstr(Date) & ".xlsm", FileFormat:=52 

in Excel 2016 und El Capitan, diese besondere Linie einen Fehler gibt zu sagen Die Datei wurde als 9-stellige Nummer gespeichert, die ich nie finden kann.

Immer, wenn ich den FileFormat-Parameter verwende, führt dies zu einem Fehler, so dass ich es für die Zwecke der Experimente fallen gelassen habe. Ich habe versucht, den gesamten Dateinamen (einschließlich des Datums) in eine Zeichenkettenvariable zu setzen und zu laufen ... wb.SaveAs Dateiname: = xxx,: = FileFormat: = 52 mit xxx, das der nicht quoted variable Name ist, der sich auf den Dateinamen bezieht. Dies interpretiert den Variablennamen als Literal. Das gleiche Ergebnis mit "\ FileNameString", "$ FileNameString", "FileNameString", "$ FileNameString", Application.Evaluate(FileNameString), [FileNameString]. Entweder bekomme ich eine Fehlermeldung, dass die Datei nicht gespeichert werden kann, die Datei wird als neunstellige Ganzzahl gespeichert, oder die VBA führt die Zeile nicht aus.

Die einzige Möglichkeit, dies zu erreichen ist, ein Literal für den Dateinamen zu verwenden, ohne zu versuchen, Funktionen wie "Date" oder "Cstr (Date)" in der Zeile auszuführen. Kann jemand eine Funktion ausführen (wie wir es früher können) oder eine Zeichenkette von einem Variablennamen erhalten, während wir den Parameter FileName verwenden?

+0

workbook.saveas strFileName, xlFileFormat.xlExcel ..... –

+0

Ich vermute, das Problem das Datenformat ist. Versuchen Sie: 'wb.SaveAs Dateiname: =" Old_New_Cust "& Format (Datum," mm-dd-yyyy ") &" .xlsm "' zum Beispiel. – Rory

+0

Rory, danke für die schnelle Antwort. Das hat super funktioniert. Danke für die Lösung. Es tut mir leid, dass ich die andere Idee, die von creditdit eingereicht wurde, nicht ausprobieren konnte, aber ich werde es versuchen und sehen, wie es funktioniert. – OldDev5724

Antwort

0

Hier ist etwas, das ich verwende,

Sub G5() 
Dim Path As String 
Dim filename As String 
Path = "C:\Users\ME\Documents\Testing\" & _ 
       Range("G5") & "\" & theMonth & "\" 'change this path to whatever destination you want the files saved to 
filename = Range("G5") 
ActiveWorkbook.SaveAs filename:=Path & filename & "-" & Format(Date, "mmddyyyy") & ".xlsm", FileFormat:=52 
End Sub 
Verwandte Themen