【问题标题】:VBA "ThisWorkbook.Close" Does not close this workbook!VBA "ThisWorkbook.Close" 不关闭此工作簿!
【发布时间】:2010-02-17 15:40:17
【问题描述】:

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

文件 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 打开,启动一个用户表单,用户点击一个按钮,File B 启动,FileA 没有在应该关闭的时候关闭。

如果有任何帮助,我将不胜感激!

编辑:我应该注意,如果重写 FileA 以直接打开 FileC,则 FileA 会正确关闭。 FileB 中的用户表单可以阻止 File A 关闭吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

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

    【讨论】:

    • 先生,您是人间的神。早上的大部分时间我都在为此苦恼。
    【解决方案2】:

    如果您的工作簿 FileA 无论如何都发生了更改,系统将提示用户保存工作簿。

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

    为了避免这个提示,只要你不需要保存更改,这段代码就可以工作:

    ThisWorkbook.Close SaveChanges = False
    

    【讨论】:

    • 感谢您的帮助。不幸的是问题仍然存在,但我真的应该把它放在那里,永远不知道用户会做什么。
    • 如果您确实需要保存更改,只需将 savechanges 更改为 true。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2018-11-07
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多