En una subrutina, quiero abrir un libro, leerlo y cerrarlo.
Por alguna razón, me sale un error:Error al cerrar un libro abierto en VBA Userform
Run-time error '1004':
Method 'Close' of object _Workbook failed
he identificado un fragmento de código mínima para reproducir el problema.
Crea un archivo Excel nuevo. En él, crea una forma de usuario. Por eso, crear un botón de comando con el siguiente 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
Lo que realmente me deja perplejo es que este error no sucede con el mismo código cuando el botón de comando no está en un formulario de usuario (en un llano botón directamente en la hoja de trabajo).
Ni siquiera sé qué más informar o dónde buscar para explicar este comportamiento (¡además de StackOverflow!). Estoy escribiendo VBA usando Excel para Mac 2011 y puedo moverme a Windows Excel 2010 si hace la diferencia.
FWIW, su código parece funcionar para mí en Windows Excel 2010 con un formulario de usuario (y también como código simple). – stephan
Malo :(Supongo que debería probarlo en Windows ahora mismo. Aunque me encantaría ver una solución que funcione tanto para Windows como para Mac. –