目前实现代码的方式存在许多问题。
- 打开您的模板文件会自动保存它,因此编辑原始文件变得更加困难
- 如果作为普通文件打开,则无法访问模板路径
希望以下内容有助于实现模板,尽管您需要在代码中硬编码所需的路径
在“本工作簿”中
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
* 附录 *
我没有意识到您使用“.xlsm”作为您的模板开始。您可以使用此中继模板路径,但重新打开保存的“.xlsm”时会遇到问题
已修改,因此仅在不是“时间表”文件时才保存
在“本工作簿”中
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