在VBA Userform中关闭已打开的工作簿时出错

Pra*_*mar 6 excel vba excel-vba excel-vba-mac

在子例程中,我想打开一个工作簿,从中读取一些工作簿并关闭它.
出于某种原因,我收到一个错误:

Run-time error '1004':

Method 'Close' of object _Workbook failed
Run Code Online (Sandbox Code Playgroud)

我已经确定了一个最小的代码片段来重现问题.
创建一个新的Excel文件.在其中,创建一个Userform.在此,使用以下Click事件代码创建一个命令按钮:

Private Sub CommandButton1_Click()
    Dim filename As String
    Dim opened_workbook As Workbook

    filename = Application.GetOpenFilename()    ' User selects valid Excel file
    Set opened_workbook = Application.Workbooks.Open(filename)
    ' File operations would occur here
    opened_workbook.Close    ' Exception thrown here

    MsgBox "If you got here, it worked!"
    Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud)

令我感到困惑的是,当Command按钮不在用户窗体上时(在工作表上的普通按钮上),相同的代码不会发生此错误.

我甚至不知道还有什么要报告或在哪里解释这种行为(除了StackOverflow!).我正在使用Excel for Mac 2011编写VBA,如果它有所作为,可以转移到Windows Excel 2010.

Sid*_*out 7

是的,在Excel 2011中,它是一个错误(未记录 - 我还没有找到它的文档).您必须稍微修改代码.试试这个

Private Sub CommandButton1_Click()
    Dim filename As String
    Dim opened_workbook As Workbook

    filename = Application.GetOpenFilename()    ' User selects valid Excel file
    Set opened_workbook = Application.Workbooks.Open(filename)

    Unload Me

    opened_workbook.Close    

    MsgBox "If you got here, it worked!"
End Sub
Run Code Online (Sandbox Code Playgroud)