VBA“ThisWorkbook.Close”不关闭此工作簿!

时间:2010-02-17 15:40:18

标签: excel vba excel-vba

我正在excel中编写一个VBA宏,它应该打开“fileB.xls”,然后在打开后立即关闭。由于我们将讨论3个excel文件,我将称之为第一个文件A.

文件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 lauches,FileA不应该关闭它。

我将不胜感激任何帮助!

编辑:我应该注意,如果重写FileA直接打开FileC,FileA会正确关闭。来自FileB的用户表单是否可以阻止文件A关闭?

2 个答案:

答案 0 :(得分:4)

是的,这是用户形式。文件C中的用户窗体是非模态的。它与文件B中的文件相反。当文件B打开时,用户窗体打开,所有代码执行都会停止,直到它关闭。使用文件C,代码继续执行。如果将文件B的用户表单属性ShowModal更改为False,它们的工作方式相同。

在VBE中,打开有问题的Userform,然后按F4打开“属性”对话框。找到ShowModal属性并更改为False。

答案 1 :(得分:0)

如果您的工作簿FileA已更改,则系统将提示用户保存工作簿。

根据您正在运行的其他代码,这可能会隐藏在视图中。

要避免此提示,只要您不需要保存更改,此代码就可以使用:

ThisWorkbook.Close SaveChanges = False