Как закрыть книгу Excel из проекта MS? (ВБА)

Я пытаюсь создать небольшой макрос в проекте MS. это просто закроет книгу, уже открытую в Excel. в идеале я хотел бы закрыть одну конкретную книгу Excel, но меня бы удовлетворила даже возможность закрыть Excel из проекта MS.

довольно легко найти, как закрыть книгу, которую я создал/открыл в макросе проекта MS, но я не могу найти способ закрыть открытую книгу, которая не была создана в моем макросе.

Помощь будет высоко оценена. 🙂

Я попытался активировать книгу из проекта MS, открыв ее еще раз, но vba говорит, что не может ее открыть, поскольку она уже открыта.

Я также пытался использовать Application.SendKeys ("%{TAB}") но проект ms vba возвращает ошибку 438 «объект не поддерживает этот метод»

Посмотрите stackoverflow.com/questions/26303173/…

CHill60 27.02.2024 09:03

Не делайте этого — это значит убить процесс, который не отвечает.

Rachel Hettinger 27.02.2024 09:34

См.: stackoverflow.com/questions/23583695/close-already-opened-wo‌​rkbook-in-outlook-vb‌​a. Этот метод будет работать так же, как и при запуске из Project.

Rachel Hettinger 27.02.2024 09:39

@ CHill60, который работает с oProc.Terminate без скобок. 👍большое спасибо. 🙂

Damien Dambre 27.02.2024 09:40

@Rachel Hettinger Мне удалось немного переработать предложенный вами код, чтобы он работал, спасибо за это. Я очень рад наконец-то получить для вас сообщение, потому что раньше я уже использовал многие ваши ответы о проекте MS. и еще раз о МНОГИХ других вещах, в которых вы, сами того не зная, помогли мне в последние годы. 🙂

Damien Dambre 27.02.2024 10:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Итак, используя предложение @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

примечание: мне пока не удалось выяснить почему, но в некоторых случаях (редко), когда открыто несколько книг, макрос не закрывает нужную книгу и отображается сообщение об ошибке. Я обновлю макрос, если найду решение.

Damien Dambre 01.03.2024 06:08

после нескольких дней тестов я рекомендую вместо этого использовать функцию уничтожения, предложенную @Chill60. ссылка убить приложение Excel

макрос для закрытия одной книги, к сожалению, в большинстве случаев не закрывает ее. макрос для уничтожения Excel работает постоянно.

Другие вопросы по теме