Я пытаюсь создать небольшой макрос в проекте MS. это просто закроет книгу, уже открытую в Excel. в идеале я хотел бы закрыть одну конкретную книгу Excel, но меня бы удовлетворила даже возможность закрыть Excel из проекта MS.
довольно легко найти, как закрыть книгу, которую я создал/открыл в макросе проекта MS, но я не могу найти способ закрыть открытую книгу, которая не была создана в моем макросе.
Помощь будет высоко оценена. 🙂
Я попытался активировать книгу из проекта MS, открыв ее еще раз, но vba говорит, что не может ее открыть, поскольку она уже открыта.
Я также пытался использовать Application.SendKeys ("%{TAB}") но проект ms vba возвращает ошибку 438 «объект не поддерживает этот метод»
Не делайте этого — это значит убить процесс, который не отвечает.
См.: stackoverflow.com/questions/23583695/close-already-opened-workbook-in-outlook-vba. Этот метод будет работать так же, как и при запуске из Project.
@ CHill60, который работает с oProc.Terminate без скобок. 👍большое спасибо. 🙂
@Rachel Hettinger Мне удалось немного переработать предложенный вами код, чтобы он работал, спасибо за это. Я очень рад наконец-то получить для вас сообщение, потому что раньше я уже использовал многие ваши ответы о проекте MS. и еще раз о МНОГИХ других вещах, в которых вы, сами того не зная, помогли мне в последние годы. 🙂





Итак, используя предложение @Rachel Hettinger, мне удалось завершить функцию закрытия одной конкретной книги Excel из проекта MS.
важный : это работает для проекта MS, но я не уверен, что это подойдет для любых других офисных приложений. (точно не в Excel, там было бы намного проще)
Function CloseWorkbook(WorkbookToClose As String)
'the name of the file you want to close (the variable WorkbookToClose above)
'must contain the name of the file and the extension
Dim xlapp As Object
On Error GoTo Error_handler
Set xlapp = GetObject(, "Excel.Application")
Dim wb As Object
For Each wb In xlapp.Workbooks
If wb.Name = WorkbookToClose Then
wb.Close False
End If
Next wb
Error_handler:
End Function
примечание: мне пока не удалось выяснить почему, но в некоторых случаях (редко), когда открыто несколько книг, макрос не закрывает нужную книгу и отображается сообщение об ошибке. Я обновлю макрос, если найду решение.
после нескольких дней тестов я рекомендую вместо этого использовать функцию уничтожения, предложенную @Chill60. ссылка убить приложение Excel
макрос для закрытия одной книги, к сожалению, в большинстве случаев не закрывает ее. макрос для уничтожения Excel работает постоянно.
Посмотрите stackoverflow.com/questions/26303173/…