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.
是的,在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)