我正在使用Word和Excel中的VBA。我有Word運行一個用戶窗體,它將自動打開一個Excel文件。用戶應該在Excel文件中填寫一些數據,然後返回到Word用戶窗體。當用戶完成填充Word用戶窗體中的所有字段時,它將在Word上運行一些將Excel中的數據複製到Word的VBA代碼。完成後,Excel文件將自動關閉。因此,我需要防止用戶手動關閉Excel應用程序。從Word VBA防止Excel提示
爲了做到這一點,我在Excel VBA中使用這些代碼Sub Workbook_BeforeClose
。如果用戶關閉Excel應用程序窗口,它將顯示一個消息框,詢問用戶是否仍在使用Word用戶窗體。代碼如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
answer = MsgBox("Are you still working with Word userform?", vbYesNo)
If answer = vbYes Then
Cancel = True
MsgBox "This workbook should not be closed. It will be automatically closed when you finish working with Ms. Word Template Userform."
Else
Application.ThisWorkbook.Saved = True
End If
End Sub
在Word中VBA,我有一些代碼以關閉Excel文件:
Sub closeExcelApp()
If Not excelApp Is Nothing Then
excelApp.DisplayAlerts = False
excelWb.Close savechanges:=False
Set excelWb = Nothing
excelApp.Quit
End If
Set excelApp = Nothing
End Sub
做的話VBA代碼從Excel的數據複製到Word時,該小組將被稱爲。但是,調用此子將導致調用Workbook_BeforeClose
。同時,我不希望Workbook_BeforeClose
在我稱之爲Word的VBA中的closeExcelApp
子時調用。
有什麼建議嗎?
最好的方法是創建一個'公共布爾值',當你輸入'closeExcelApp'並且在'Workbook_BeforeClose'開頭添加類似'If Boolean Then Exit Sub'時,你設置爲True。這應該夠了吧! ;) – R3uK