Erreur lors de la fermeture d'un classeur ouvert dans VBA Userform

Dans une sous-routine, je veux ouvrir un classeur, faire un peu de lecture, puis fermez-le.

Pour une raison quelconque, j'obtiens une erreur:

Run-time error '1004':

Method 'Close' of object _Workbook failed

J'ai identifié un minime fragment de code pour reproduire le problème.

Créer un nouveau fichier excel. En cela, créer un Userform. Sur ce, créer un Bouton de Commande à la suivante Cliquez sur le code d'événement:

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

Vraiment ce qui me confond, c'est que cette erreur ne se produit pas avec le même code lorsque le bouton de Commande n'est pas sur un userform (sur un simple bouton droit sur la feuille de calcul).

Je ne sais même pas quoi d'autre à signaler, ou où regarder pour expliquer ce comportement, en plus de StackOverflow!). Je suis en train d'écrire à l'aide de VBA Excel pour Mac 2011 et peut se déplacer vers Windows Excel 2010 si cela fait une différence.

  • FWIW, votre code semble fonctionner pour moi sur Windows Excel 2010 avec un formulaire utilisateur (et aussi en tant que code clair).
  • Darn 🙁 je suppose que je devrais tester sur Windows moi maintenant. Bien que je serais ravi de voir une solution qui fonctionne pour Windows et Mac.