Visual Basic Excel函数用于命名单元格内容以外的文件
我正试图用Visual Basic编写一个函数,根据某些单元格中的值创建电子表格的文件名 到目前为止,我一直在使用以下代码:Visual Basic Excel函数用于命名单元格内容以外的文件,excel,vba,Excel,Vba,我正试图用Visual Basic编写一个函数,根据某些单元格中的值创建电子表格的文件名 到目前为止,我一直在使用以下代码: Public Sub SaveAsA1() ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmm") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value ActiveWorkb
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
此代码在我第一次保存文件时起作用,但是,每当我重新保存文件时,它不会根据单元格中的新值更新文件名
有人知道我如何编写一个函数来实现这一点吗 您可以尝试在保存事件之前为
添加代码。它将正常保存文件,但每次按“另存为”按钮时,它都会按预期更改名称
此代码应位于此工作簿
模块(工作簿模块)中
请注意,我已经更改了此文件
,在time中添加了ss
,并在末尾添加了.xlsm
扩展名。此外,我还将文件格式参数
添加到.SaveAs方法
您可以尝试在保存事件之前为添加代码。它将正常保存文件,但每次按“另存为”按钮时,它都会按预期更改名称
此代码应位于此工作簿
模块(工作簿模块)中
请注意,我已经更改了此文件
,在time中添加了ss
,并在末尾添加了.xlsm
扩展名。我还将FileFormat参数
添加到.SaveAs方法
中,是否有任何错误消息?它是否会更改名称的时间和日期部分,或者不会更改名称中的任何内容?它不会引发任何错误。在修改名称后,它不会更改名称中的任何内容,包括日期和时间。请将名称的时间部分更改为:格式(Now(),“hhmmss”)
,以这种方式在即时窗口中测试时查看其工作情况:?“RWO”+格式(现在(),“yyyymmddss”)+“+”格式(现在(),“hhmm”)+“+”范围(“D4”)。值+“+”范围(“F5”)。值+“+”范围(“D8”)。值
。。。是不是?我不熟悉使用即时窗口。但是,我确实在时间格式的末尾添加了“ss”。现在我注意到,每次运行代码时,VisualBasic窗口标题栏上的.xlsm文件名都会以新的秒数更新。看起来文件名可能正在更新。但是,每当我单击“另存为”时,“另存为”窗口对话框中的文件名将保留为旧文件名。是否希望每次在Excel应用程序中按“另存为”按钮时运行此代码?您正在运行哪个Office版本?是否有任何错误消息?它是否会更改名称的时间和日期部分,或者不会更改名称中的任何内容?它不会引发任何错误。在修改名称后,它不会更改名称中的任何内容,包括日期和时间。请将名称的时间部分更改为:格式(Now(),“hhmmss”)
,以这种方式在即时窗口中测试时查看其工作情况:?“RWO”+格式(现在(),“yyyymmddss”)+“+”格式(现在(),“hhmm”)+“+”范围(“D4”)。值+“+”范围(“F5”)。值+“+”范围(“D8”)。值
。。。是不是?我不熟悉使用即时窗口。但是,我确实在时间格式的末尾添加了“ss”。现在我注意到,每次运行代码时,VisualBasic窗口标题栏上的.xlsm文件名都会以新的秒数更新。看起来文件名可能正在更新。但是,每当我单击“另存为”时,“另存为”窗口对话框中的文件名将保留为旧文件名。是否希望每次在Excel应用程序中按“另存为”按钮时运行此代码?您正在运行哪个Office版本?非常感谢。这正是我想做的。很好地解决并实施了它,+1非常感谢。这正是我想做的。很好地解决了这个问题并实现了+1
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