In una subroutine, voglio aprire una cartella di lavoro, leggerne una parte e chiuderla.
Per qualche ragione, ottengo un errore:Errore durante la chiusura di una cartella di lavoro aperta in VBA Userform
Run-time error '1004':
Method 'Close' of object _Workbook failed
ho identificato un frammento di codice minima per riprodurre il problema.
Creare un nuovo file excel. In esso, crea un Userform. Su questo, creare un pulsante di comando con il seguente codice di 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
Ciò che veramente mi ha lasciato perplesso è che questo errore non si verifica con lo stesso codice quando il pulsante di comando non è in un form utente (su una pianura pulsante direttamente sul foglio di lavoro).
Non so nemmeno che altro segnalare o dove cercare di spiegare questo comportamento (oltre a StackOverflow!). Sto scrivendo VBA usando Excel per Mac 2011 e posso passare a Windows Excel 2010 se fa la differenza.
FWIW, il tuo codice sembra funzionare per me su Windows Excel 2010 con un modulo utente (e anche come codice semplice). – stephan
Darn :(Suppongo che dovrei provarlo su Windows me stesso, anche se mi piacerebbe vedere una soluzione che funziona sia per Windows che per Mac. –