Fehler beim Schließen einer geöffneten Arbeitsmappe in VBA-Benutzerformular
In einer Unterroutine möchte ich eine Arbeitsmappe öffnen, lesen und schließen.
Aus irgendeinem Grund erhalte ich einen Fehler:
Run-time error '1004':
Method 'Close' of object _Workbook failed
Ich habe ein minimales Code-Snippet identifiziert, um das Problem zu reproduzieren.
Erstellen Sie eine neue Excel-Datei. Erstellen Sie darin ein Benutzerformular. Erstellen Sie daraufhin eine Befehlsschaltfläche mit dem folgenden Click-Ereigniscode:
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
Was mich wirklich verwirrt ist, dass dieser Fehler nicht mit demselben Code auftritt, wenn sich die Befehlsschaltfläche nicht in einem Benutzerformular befindet (auf einer einfachen Schaltfläche direkt im Arbeitsblatt).
Ich weiß nicht einmal, was ich sonst noch melden oder wo ich nachsehen soll, um dieses Verhalten zu erklären (außer StackOverflow!). Ich schreibe VBA mit Excel für Mac 2011 und kann auf Windows Excel 2010 umsteigen, wenn es einen Unterschied macht.