0

我正在尝试在 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 

此代码在我第一次保存文件时有效,但是,每当我重新保存文件时,它都不会根据单元格中的新值更新文件名。

有谁知道我该如何编写一个函数来做到这一点?

4

1 回答 1

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.

于 2013-06-21T20:33:31.277 回答