Изменение свойства "FullName" рабочих книг в событии "Workbook_BeforeSave" - PullRequest
1 голос
/ 02 февраля 2011

Мне нужно переименовать книгу в имя ячейки, когда пользователь нажимает «Сохранить» или «Сохранить как». Я предполагаю, что мне нужно было бы сделать это в событии Workbook_BeforeSave. У меня есть следующие вопросы:

  • Как установить свойство ActiveWorkbook.FullName без вызова Save, SaveAs или SaveCopyAs?
  • Возможно ли то, что я пытаюсь сделать, даже не отключая панель инструментов и не добавляя настраиваемые кнопки сохранения?

Я использую следующий код, чтобы создать имя файла

Dim fName As String, sName As String
fName = ThisWorkbook.FullName
sName = ThisWorkbook.Name    
fName = Left(fName, (Len(fName) - Len(sName))) & _ 
         Thisworkbook.Worksheet("Cust").Range("FILE").Value & ".xls"

Спасибо

1 Ответ

1 голос
/ 03 февраля 2011

Вы не можете изменить свойства Name или Fullname, кроме как через операцию сохранения. Событие Before_Save имеет аргумент Cancel, который, если вы установите True, остановит операцию сохранения и позволит вам сделать это самостоятельно. Вот пример.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...