2010-02-17 173 views
2

我正在寫一個VBA宏,應該打開「fileB.xls」,然後在打開後立即關閉。由於我們將討論3個excel文件,我將稱其爲第一個文件A。VBA「ThisWorkbook.Close」不關閉此工作簿!

文件A的用戶窗體上按鈕的代碼如下所示。

Private Sub CommandButton2_Click() 
    'Code for Button in FileA ' 
    Workbooks.Open Filename:="File Path/fileB.xls" 
    ThisWorkbook.Close 
End Sub 

一旦「fileB.xls」打開,它將啓動一個表單來收集一些用戶信息。

但是,原始文件沒有關閉後,「fileB.xls」打開。

Sub Workbook_Open() 
    'Code in FileB ' 
    'Display a form to obtain information from the user. ' 
    frmOpenFile.Show 
End Sub 

值得注意的是fileB打開第三個和最終的excel文件(FileC)。在FileB中使用與FileA代碼類似的代碼,並在啓動FileC(FileB關閉正常)時正常工作。

這個想法是,有一個「主」文件,你可以選擇你需要填寫的表格。這個主文件然後關閉自己並讓用戶填寫表單,並根據用戶輸入打開最終的excel文件。因此,只是爲了重申這個問題,FileA打開,啓動一個用戶表單,用戶點擊一個按鈕,文件B開啓,FileA在它應該關閉時不會關閉。

我將不勝感激任何幫助!

編輯:我應該注意,如果重寫FileA直接打開FileC,FileA正確關閉。用戶可以從FileB中創建防止文件A關閉嗎?

回答

4

是的,它的窗體。文件C中的用戶表單是非模態的。它與文件B中的相反。當文件B打開時,用戶窗體打開,所有代碼執行停止,直到它關閉。使用文件C,代碼繼續執行。如果將文件B的用戶窗體屬性ShowModal更改爲False,則它們的工作原理將相同。

在VBE中,打開有問題的用戶窗體並按F4打開屬性對話框。找到ShowModal屬性並將其更改爲False。

+1

主席先生,你是男性中的上帝。 早上的大部分時間裏,我一直在抨擊我。 – Sumason 2010-02-17 18:17:11

0

如果您的工作簿FileA已更改,則會提示用戶保存工作簿。

根據您正在運行的其他代碼,這可能會被隱藏。

爲了避免出現此提示,只要你並不需要保存更改,此代碼將工作:

ThisWorkbook.Close SaveChanges = False 
+0

感謝您的幫助。不幸的是,問題依然存在,但我真的應該在那裏,永遠不知道用戶會做什麼。 – Sumason 2010-02-17 16:14:56

+0

如果您確實需要保存更改,請將savechanges更改爲true。 – guitarthrower 2010-02-17 17:50:54

相關問題