2013-05-24 4 views
1

У меня есть «мастер» макет расписания, который пользователи открывают и завершают. По завершении я заставляю макрос (в этой книге) запускать и переименовывать мастер в имя файла, хранящегося в имени сохранения области.Макро работает только один раз

Это работает в первый раз, когда пользователь открывает Excel, редактирует и закрывает книгу. Однако, если пользователь во второй раз открывает «главный» расписание, завершает другой расписание и закрывает, не закрывая Excel между ними, тогда макрос не запускается.

Я подробно искал, есть ли какая-то «глобальная переменная», которую мне нужно сбросить, но без радости.

Вот код. Любой совет будет принят во внимание.

Private Sub Workbook_BeforeClose(SaveAsUI As Boolean) 
If Not SaveAsUI Then 
    Cancel = True 
    Application.EnableEvents = False 
    MSG1 = MsgBox("This File will be saved as....... " & Sheets("Timesheet").Range("savename").Value & ".xlsm", vbOKOnly, "Confirm") 
    Me.SaveAs Filename:=ThisWorkbook.Path & "\" & Sheets("Timesheet").Range("savename").Value & ".xlsm" 
    ActiveWorkbook.Close False 
    Application.EnableEvents = True 
    End If 
End Sub 
+0

Быстрый вопрос ... вы уверены, что ваш окончательный Application.EnableEvents = True выполняется ... Я думаю, что закрытие книги, прекратит выполнение последней строки ... Может быть, постарайтесь поставить ее перед закрытием. –

+0

Я переехал Application.Events перед ActiveWorkbook.Close, как вы предлагаете, и который разрешил многоликую работу макроса, большое спасибо. Он ввел небольшую дополнительную проблему в том, что MsgBox теперь выпущен дважды, что я буду изучать. Еще раз спасибо. – Bob

ответ

0

@Bob, кажется, как будто это что-то делать с BeforeClose событием. Перед закрытием книги вы пытаетесь сделать SaveAs. Это может вызвать некоторые проблемы. Вы пытались отладить этот макрос? Если да, что вы нашли?

+0

Привет, theghostofc, я пытался отладить этот код, но не могу этого сделать, может быть, я не знаком с VBA (я использовал код looong loooong, но только что попал в VBA). Нет сообщений об ошибках, и я не могу «Вступить» или запустить его в точку останова. Сказав, что Король предоставил решение, которое продвигает меня вперед, но спасибо за ваше предложение. – Bob

Смежные вопросы