Erro ao fechar uma pasta de trabalho aberta no formulário de usuário do VBA
Em uma sub-rotina, quero abrir uma pasta de trabalho, fazer algumas leituras dela e fechá-la.
Por algum motivo, recebo um erro:
Run-time error '1004':
Method 'Close' of object _Workbook failed
Eu identifiquei um trecho de código mínimo para reproduzir o problema.
Crie um novo arquivo excel. Nele, crie um Userform. Nessa, crie um botão de comando com o seguinte código de evento 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
O que realmente me deixa perplexo é que esse erro não acontece com o mesmo código quando o botão de comando não está em um formulário de usuário (em um botão simples direto na planilha).
Eu nem sei mais o que denunciar ou onde procurar para explicar esse comportamento (além do StackOverflow!). Estou escrevendo o VBA usando o Excel para Mac 2011 e posso migrar para o Windows Excel 2010 se isso fizer diferença.