W podprogramie chcę otworzyć skoroszyt, zrobić z niego odczyt i zamknąć go.
Z jakiegoś powodu otrzymuję błąd:Błąd podczas zamykania otwartego skoroszytu w VBA Userform
Run-time error '1004':
Method 'Close' of object _Workbook failed
I określiły minimalny fragment kodu do odtworzenia problemu.
Utwórz świeży plik programu Excel. W tym celu utwórz formularz użytkownika. Na który należy utworzyć przycisk polecenia z następującego kodu 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
Co mnie naprawdę wprawia w zakłopotanie, że ten błąd się nie dzieje z tym samym kodem, gdy przycisk poleceń nie jest na UserForm (na równinie przycisk prosto w arkuszu roboczym).
Nie wiem nawet, co jeszcze zgłosić lub gdzie szukać wyjaśnić to zachowanie (poza StackOverflow!). Piszę VBA przy użyciu programu Excel dla komputerów Mac 2011 i można przenieść do systemu Windows Excel 2010, jeśli ma to znaczenie.
Twój kod wydaje się działać dla mnie w Windows Excel 2010 z formularzem użytkownika (a także jako zwykły kod). – stephan
Darn :(Przypuszczam, że powinienem przetestować go na Windowsie teraz.Ale chciałabym zobaczyć rozwiązanie, które działa zarówno na Windowsie jak i na Macu –