我制作了一个启用宏的Excel文件(.xlsm),我想将使用该模板打开的所有文件保存到具有特定文件名的特定位置。在我的情况下,我想打开它并在双击模板后立即将其与日期保存在文件名中。现在,我有这个VBA代码,它没有做我想要的。
Private Sub Workbook_Open()
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Now, "yyyy-mm-dd") & " Timesheet"
End Sub
理想情况下,我希望在工作周的最后一天保存。因此,文件名应该是“以mm-dd-yyyy结尾的周末。”我的工作簿中有代码已经执行此操作,但我不确定Workbook代码是否与VBA代码相同(我总共VBA newb)
=IF(WEEKDAY(TODAY())=7,TODAY()-1,IF(WEEKDAY(TODAY())=6,TODAY(),TODAY()-WEEKDAY(TODAY())-1))
感谢您的帮助
答案 0 :(得分:0)
您目前如何实施代码存在许多问题。
- 打开模板文件将自动保存,因此编辑原始文件会变得更加困难
- 如果您将模板路径作为普通文件打开,则无法访问模板路径
醇>
希望以下内容有助于实现模板,尽管您需要在代码中对所需路径进行硬编码
在ThisWorkbook'
中
Private Sub Workbook_Open()
Call SaveFromTemplate
End Sub
在模块中
Function SaveFromTemplate()
Dim Path As String: Path = ActiveWorkbook.FullName
If Not Right(Path, Len(Path) - InStrRev(Path, ".")) = "xltm" Then
Path = "C:\Edit this path\"
' Friday = 6
ThisWorkbook.SaveAs Path & Format(WeekdayDate(Date, 6), "yyyy-mm-dd") & " Timesheet"
End If
End Function
Function WeekdayDate(DateVal As Date, DayInWeek As Long) As Date
DayInWeek = DayInWeek Mod 7
Dim DayOffset As Long: DayOffset = DayInWeek - Weekday(DateVal) + IIf(DayInWeek - Weekday(DateVal) < 0, 7, 0)
WeekdayDate = DateAdd("d", DayOffset, DateVal)
End Function
* ADDENDUM *
我没有意识到你正在使用&#39; .xlsm&#39;作为你的模板开始。您可以使用此中继模板路径,但在重新打开已保存的&#39; .xlsm&#39;
时会出现问题已修改,只有在不是&#39;时间表的情况下才会保存。档案
在ThisWorkbook&#39;
中
Private Sub Workbook_Open()
If InStr(ThisWorkbook.FullName, "Timesheet") = 0 Then
' Friday = 6
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(WeekdayDate(Date, 6), "yyyy-mm-dd") & " Timesheet"
End If
End Sub