2013-02-12 3 views
1

Раньше я использовал это:ActiveX управления Блоки Me.Saved = True

Private Sub Document_Close() 
    Me.Saved = True 
End Sub 

отключить запрос на сохранение при выходе из документа Word, и изменения были сделаны, однако я добавил «Combo Box (ActiveX Control) ", и теперь Word предлагает снова сохранить. Есть ли способ обойти это?

Я пробовал писать код, чтобы просто удалить Combo Box, когда документ закрывается, но ящик удаляется после использования (не мой код, он просто делает), а затем, когда документ закрывает окно, не существует и вызывает ошибку. Я мог бы просто выполнить контроль над if/error, но я чувствую, что это просто становится неаккуратным, а не нахождением корневой проблемы ... может ли кто-то помочь?

+0

А как насчет Application.DisplayAlerts = wdAlertsNone ActiveDocument .Close SaveChanges: = False? – dee

+0

@DanielDusek Я просто попробовал 'Application.DisplayAlerts = wdAlertsNone' в' Private Sub Document_Open() 'и отдельно' ActiveDocument.Close SaveChanges: = False' в 'Private Sub Document_Close()' и не работал. Я помещаю их в неправильное место? У меня есть 'ActiveDocument.Close SaveChanges: = False', когда пользователь нажимает кнопку (после выполнения других процедур), но если кто-то случайно открывает документ или не хочет его использовать, закрывая его верхним кнопка [X] все еще вызывает приглашение. – Daevin

ответ

1

Если была такая же проблема, и нашел решение с Bing: http://answers.microsoft.com/en-us/office/forum/office_2007-customize/activex-control-blocks-ms-word-vba/71eca664-8e43-4e4f-84c5-59154661ee5a

Следующий код помог мне обойти эту проблему:

Dim WithEvents App As Application 

Private Sub App_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean) 
    'Did the user saved our file? 
    If Not ThisDocument.Saved Then 
    'Close our file? 
    If Doc.Name = ThisDocument.Name Then 
     'Cancel the dialog always! 
     Cancel = True 
     'Set the save state 
     ThisDocument.Saved = True 
     'Close the document after this event 
     Application.OnTime Now + TimeSerial(0, 0, 1), Me.CodeName & ".Document_AfterClose" 
    End If 
    End If 
End Sub 

Sub Document_AfterClose() 
    'Close the document without saving 
    ThisDocument.Close False 
End Sub 

Private Sub cboEquip_Change() 
    'Let the document know that a change is made 
    ThisDocument.Saved = False 
End Sub 

Private Sub Document_Open() 
    Set App = Application 
End Sub 
+0

Спасибо за ответ! Однако, если вы посмотрите на пользователя, который разместил этот вопрос ...: P получил несколько просмотров здесь, но ответов нет, поэтому я пошел на форум MS. Спасибо за ответ, хотя, очень ценю вашу помощь! – Daevin

+0

lol, не заметил, что это был ваш вопрос на форуме ms. – Arnoldiusss

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