Предотвращение сохранения условных аргументов без сохранения Saveas из-за тех же условий - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть шаблон, над которым я работаю.Лист использует две основные функции, о которых я буду говорить.Во-первых, это Save (func), который сохраняет копию документа в нужную папку, оставляя шаблон.Второй - это функция Rev Up. Всякий раз, когда в шаблон вносятся изменения, новая копия сохраняется, а старая остается.Обе эти функции работают отлично.

Проблемы возникают из-за человеческой ошибки.Когда шаблон открыт, очень легко нажать «Сохранить» (в версии Excel, а не на кнопке VBA, которую я создал) или когда при закрытии шаблона появляется «файл не сохранен», снова открывается «Сохранить».

Когда кто-то работает с этого рабочего стола, он часто использует предварительно заполненную электронную таблицу, поскольку некоторые из них имеют много совпадений, которые могут сэкономить много работы по сравнению с началом с шаблоном.Так что все мои функции должны оставаться активными.При работе с предварительно заполненным листом обе эти проблемы усиливаются, так как вызывают много ошибок и потеряют работу.

Чтобы решить эту проблему, я добавил 3 функции, которые прекрасно работают самостоятельно.

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


If Fileonly = Filename Then    

    Else:
        Cancel = True 'Cancels any request to save the file
        MsgBox "File name does not match part number, Use Rev up button for format changes or use Save button to create new file!"
End If

Я хочу, чтобы этот код активировался при нажатии кнопки сохранения.Затем сравните текущее имя файла с именем, которое будет дано файлу, если файл был сохранен (func) прямо там.Этот код делает именно то, что я хочу ... и многое другое.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = False Then

ThisWorkbook.Saved = True
ActiveWorkbook.SaveAs Filename:=*backupfilelocation*

End If

Этот код используется для подавления «хотите ли вы сохранить изменения», при этом файл будет сохранен, а затем сохранит копию файла в резервном хранилище, если вы его сохранили случайно.,Опять же, этот код работает отлично.Но функция Saveas запускает код beforesave.Затем предотвращает сохранение файла.

У меня есть 2 других макроса, которые также сохраняют файл.Как мне разрешить saveas работать, подавляя возможность сохранения, если названия не совпадают.

1 Ответ

0 голосов
/ 26 сентября 2019

Workbook_BeforeClose Происходит до сохранения рабочей книги, не имеет значения, является ли она "Сохранить" или "Сохранить как ...", как описано здесь

Так что эта процедура будет работатьвсегда и просто поместите MsgBox, чтобы поставить значение ThisWorkbook. Сохранено, чтобы следить за ним.

Если вы действительно хотите «Сохранить как ...», так как вы всегда будете запускать эту процедуру, добавьте «Сохранить как».... "после сохранения резервной копии.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = False Then
ThisWorkbook.Saved = True
ActiveWorkbook.SaveAs Filename:=*backupfilelocation*
End If
If ThisWorkbook.Saved = False Then ActiveWorkbook.SaveAs

Таким образом, если вы используете" Сохранить ", будет работать, как ожидалось, и если вы использовали" Сохранить как ... ", это создаст файл bckup, но этопозволит вам сохранить как следует.

Надеюсь, это поможет.

...