开发者

Changing a workbooks "FullName" property in the "Workbook_BeforeSave" event

开发者 https://www.devze.com 2023-02-07 23:40 出处:网络
I need to rename a workbook to the name of a cell when the user clicks \"Save\" or \"Save as\". My guess is that I would need to do this in the Workbook_BeforeSave event. I have the following question

I need to rename a workbook to the name of a cell when the user clicks "Save" or "Save as". My guess is that I would need to do this in the Workbook_BeforeSave event. I have the following questions:

  • How do you set the ActiveWorkbook.FullName property with out calling Save, SaveAs, or SaveCopyAs?
  • Is what I am trying to do even possible without disabling the toolbar and adding custom save buttons?

I use the following code to get create the filename

Dim fName As String, sName As String
fName = Thi开发者_运维技巧sWorkbook.FullName
sName = ThisWorkbook.Name    
fName = Left(fName, (Len(fName) - Len(sName))) & _ 
         Thisworkbook.Worksheet("Cust").Range("FILE").Value & ".xls"

Thanks


You can't change the Name or Fullname properties except through a save operation. The Before_Save event has a Cancel argument that if you set to True will stop the save operation and let you do it yourself. Here's an example.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim sOldName As String

    'If SaveAsUI Then
        Cancel = True 'cancel the save and do it yourself in code
        sOldName = Me.FullName 'store the old name so you can delete it later

        'Save using the value in the cell
        Application.EnableEvents = False
            Me.SaveAs Me.Path & Application.PathSeparator & _
                Me.Worksheets("CUST").Range("FILE").Value & ".xls"
        Application.EnableEvents = True

        'If the name changed, delete the old file
        If Me.FullName <> sOldName Then
            On Error Resume Next
                Kill sOldName
            On Error GoTo 0
        End If

    'End If

End Sub
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号