Błąd podczas zamykania otwartego skoroszytu w formularzu użytkownika VBA
W podprogramie chcę otworzyć skoroszyt, odczytać z niego i zamknąć.
Z jakiegoś powodu pojawia się błąd:
Run-time error '1004':
Method 'Close' of object _Workbook failed
Zidentyfikowałem minimalny fragment kodu, aby odtworzyć problem.
Utwórz nowy plik programu Excel. W nim utwórz formularz użytkownika. W tym celu utwórz przycisk polecenia z następującym kodem zdarzenia 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
To, co naprawdę mnie wprawia w zakłopotanie, to to, że ten błąd nie występuje w przypadku tego samego kodu, gdy przycisk polecenia nie znajduje się na formularzu użytkownika (na zwykłym przycisku bezpośrednio w arkuszu).
Nie wiem nawet, co jeszcze mam zgłosić ani gdzie szukać, aby wyjaśnić to zachowanie (oprócz StackOverflow!). Piszę VBA za pomocą programu Excel 2011 dla komputerów Mac i mogę przenieść się do systemu Windows Excel 2010, jeśli ma to znaczenie.