В подпрограмме я хочу открыть книгу, прочитать ее и закрыть.
По некоторым причинам, я получаю сообщение об ошибке:Ошибка при закрытии открытой книги в VBA Userform
Run-time error '1004':
Method 'Close' of object _Workbook failed
я определил минимальный фрагмент кода, чтобы воспроизвести проблему.
Создайте новый файл Excel. В нем создайте Userform. О том, создать кнопку Command со следующим кодом Нажмите событие:
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
Что действительно озадачивает меня в том, что эта ошибка не происходит с тем же кодом, когда кнопка Command не на UserForm (на равнине кнопка прямо на рабочем листе).
Я даже не знаю, что еще сообщить или где искать объяснение этого поведения (помимо StackOverflow!). Я пишу VBA с помощью Excel для Mac 2011 и могу перейти в Windows Excel 2010, если это имеет значение.
FWIW, ваш код работает для меня в Windows Excel 2010 с пользовательской формой (а также в виде простого кода). – stephan
Darn :(Я полагаю, что сейчас я должен проверить его на Windows. Хотя мне бы хотелось увидеть решение, которое работает как для Windows, так и для Mac. –