我正在尝试在Visual Basic中编写一个函数,以根据某些单元格中的值创建电子表格的文件名。
到目前为止,我一直在使用此代码:
Public Sub SaveAsA1()
ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmm") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value
ActiveWorkbook.SaveAs Filename:=ThisFile
End Sub
此代码在我第一次保存文件时有效,但是,每当我重新保存文件时,它都不会根据单元格中的新值更新文件名。
有谁知道如何编写一个函数来执行此操作?
答案 0 :(得分:3)
您可以尝试添加BeforeSave event
的代码。它会正常保存文件,但每次按SaveAs button
时都会更改名称。
此代码应位于ThisWorkbook
模块(工作簿模块)中。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
Application.EnableEvents = False
Dim ThisFile As String
ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmmss") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value & ".xlsm"
ActiveWorkbook.SaveAs Filename:=ThisFile, FileFormat:=XlFileFormat.xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
Cancel = True
End If
End Sub
请注意,我已在ThisFile
添加ss
到最后时间和.xlsm
分机时更改FileFormat parameter
。我还将.SaveAs method
添加到{{1}}。