2015-08-14 2 views
1

При открытии создание шаблона макроса, который Auto_Open работает этот код:Как отключить Auto_Open после первого сохранения

Sub Auto_Open() 

UserForm.Show 

End Sub 

Это то воспитывает UserForm, который говорит please save as и кнопка Ok команды. enter image description here Когда Ok щелкнут, у него есть этот код.

Private Sub SaveAs_Click() 

    Dim bFileSaveAs As Boolean 
    bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show 
    If Not bFileSaveAs Then MsgBox "User cancelled", vbCritical 

Unload Me 

End Sub 

Проблема после Auto_Open побежала за первые SaveAs я хочу это никогда не бежать снова. Потому что я хочу, чтобы иметь возможность открывать его позже, вызывая всплывающее окно Userform. Так как я могу отключить Auto_Open после его запуска, а затем сохранить его отключен

Я не могу отключить все макросы, потому что в книге все еще есть необходимость работать.

Благодаря

+0

Возможно, это могло бы так же легко, как проверка, чтобы увидеть, если [Workbook.Name свойство] (https://msdn.microsoft.com/en-us/library/office/ff195422.aspx) начинается с ** Книга**. – Jeeped

+0

Я просто заметил, что он не сохраняет файл вообще, я нажимаю ok, Напечатайте в окне сохранения как окно «Проверить этот макрос», и ничего не появляется, и рабочая книга шаблона остается открытой. – Duraholiday

+1

В диалоговом окне фонта будет только папка и имя. Для получения дополнительной информации см. [Метод Application.GetSaveAsFilename] (https://msdn.microsoft.com/en-us/library/office/ff195734.aspx). Обратите внимание, что в их примере отображается только имя файла; он фактически не сохраняет файл. Подробнее в [Workbook.SaveAs method] (https://msdn.microsoft.com/en-us/library/office/ff841185.aspx). – Jeeped

ответ

2

Вы должны использовать метод Workbook.SaveAsMSDN Found Here после того, как вы получите SaveAsFilename ...

Что касается удаления саба после завершения работы (я бы сделал это перед сохранением) See here ... Вам понадобится Auto Open Sub в другом модуле, чтобы вы могли удалить модуль перед сохранением.

Private Sub SaveAs_Click() 

Dim x As Object 
Set x = Application.VBE.ActiveVBProject.VBComponents 
x.Remove VBComponent:=x.Item("TestModule") 'Where TestModule is the module that holds the Auto Open script 

Set NewBook = Workbooks.Add 

Do 
    fName = Application.GetSaveAsFilename 
Loop Until fName <> False 

NewBook.SaveAs Filename:=fName 

fName = False 
Unload Me 

End Sub 
+0

Не забудьте принять ответ с зеленой галочкой, если он будет работать для вас. – Chrismas007

+0

Как бы я выбрал файл, который я хочу, чтобы сохранить его в И я не получил его на работу Использована. 'Private Sub SaveAs_Click() Dim FileSaveName As String FileSaveName = InputBox.Value Workbook (" Название книги ") .SaveAs FileSaveName Выгрузка Me End Sub Private Sub и Inputbox_Change() InputBox.Value =" " End Sub' – Duraholiday

+0

Я понял это, использовано' Dim bFileSaveAs As Boolean bFileSaveAs = Application.Dialogs (xlDialogSaveAs) .Show Если не bFileSaveAs Then MsgBox «Пользователь отменил», vbCritical' Еще нужно ответить на второй вопрос. Спасибо за вашу помощь. – Duraholiday

-1

Выход из автоопределения, если имя файла без конкретной формулировки.

Например: если имя файла не начинается с «N», автоопределение будет завершено.

Sub auto_open() 

VBA_CODE = ActiveWorkbook.Name 
If Left(VBA_CODE, 1) <> "N" Then Exit Sub 
Смежные вопросы