Visual Basic Excel函数从单元格内容命名文件

时间:2013-06-21 19:21:48

标签: excel excel-vba vba

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

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

有谁知道如何编写一个函数来执行此操作?

1 个答案:

答案 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}}。