PowerPoint остается открытым после создания

Вопрос или проблема

VBA-скрипт в форме Excel используется для создания титульной страницы в PowerPoint. Все работает, но презентация остается открытой, и код выдает ошибку с командой .Quit.

Dim PPTM_App As Object
Dim PPTM_File As Object
Set PPTM_App = CreateObject("Powerpoint.Application")
Set PPTM_File = PPTM_App.Presentations.Open(folder_path & uen & ".pptm")

    With PPTM_File.Slides(1)
        .Shapes("Title_Txt").OLEFormat.Object = project_text & ": " & product_text
        .Shapes("Sub_Txt").OLEFormat.Object = purpose_text
        .Shapes("ELN_Txt").OLEFormat.Object = uen
        .Shapes("Date_Txt").OLEFormat.Object = Format(Now, "dd-mmm-yy")
        .Shapes("Conc_Txt").OLEFormat.Object = "Пример текста."
    End With
    
PPTM_File.Save 'работает
PPTM_App.Quit 'не закрывает - файл остается открытым
    
Set PPTM_File = Nothing
Set PPTM_App = Nothing

Ответ или решение

Проблема закрытия PowerPoint после создания с помощью VBA

В процессе автоматизации задач с использованием языка программирования VBA в Excel вы можете столкнуться с ситуацией, когда экземпляр PowerPoint остается открытым даже после выполнения команды .Quit. Рассмотрим структуру вашего кода и предложим решение, которое поможет избежать данной проблемы.

Анализ кода

Ваш код создает экземпляр PowerPoint и открывает определенный файл. После внесения изменений и сохранения файла вы пытаетесь закрыть экземпляр PowerPoint с помощью команды PPTM_App.Quit. Однако PowerPoint остается открытым. Причины данной проблемы могут быть вызваны рядом факторов, включая:

  1. Активные объекты: Если существуют активные ссылки на объекты PowerPoint, это может помешать завершению работы приложения.
  2. Правильное закрытие объектов: Убедитесь, что все объекты PowerPoint адекватно освобождаются перед вызовом команды Quit.

Решение проблемы

Чтобы обеспечить закрытие приложения PowerPoint без возникновения ошибок, следуйте данным рекомендациям:

  1. Отключите ссылки на объекты: Убедитесь, что все ссылки на форматы и фигуры в вашей презентации сброшены.
  2. Проверьте наличие активных диалогов или форм: Убедитесь, что не отображаются никакие модальные диалоги или формы, которые могут препятствовать закрытию.
  3. Предварительное освобождение объектов: Вы можете попытаться явно запустить процесс освобождения объектов перед вызовом .Quit.

Исправленный код

Вот улучшенный вариант вашего кода, который включает дополнительные шаги для обеспечения закрытия PowerPoint:

Dim PPTM_App As Object
Dim PPTM_File As Object

' Создаем экземпляр PowerPoint
Set PPTM_App = CreateObject("Powerpoint.Application")

' Открываем презентацию
Set PPTM_File = PPTM_App.Presentations.Open(folder_path & uen & ".pptm")

' Вносим изменения
With PPTM_File.Slides(1)
    .Shapes("Title_Txt").OLEFormat.Object = project_text & ": " & product_text
    .Shapes("Sub_Txt").OLEFormat.Object = purpose_text
    .Shapes("ELN_Txt").OLEFormat.Object = uen
    .Shapes("Date_Txt").OLEFormat.Object = Format(Now, "dd-mmm-yy")
    .Shapes("Conc_Txt").OLEFormat.Object = "Example text."
End With

' Сохраняем изменения
PPTM_File.Save 

' Освобождаем ссылки на объекты
Set PPTM_File = Nothing

' Закрываем приложение PowerPoint
PPTM_App.Quit

' Освобождаем объект PowerPoint
Set PPTM_App = Nothing

Дополнительные рекомендации

  • Проверка кода на наличие ошибок: Добавьте обработку ошибок с использованием конструкции On Error, чтобы выявить любые возможные проблемы во время выполнения.
  • Убедитесь в наличии всех необходимых прав: Проверьте, что у вас есть необходимые права на закрытие приложения PowerPoint, особенно если вы работаете в среде с ограниченными правами.

Заключение

Подводя итог, при работе с автоматизацией PowerPoint через VBA важно следить за правильным освобождением объектов и управлением процессами, чтобы избежать остатков открытых приложений. Приведенное решение должно помочь вам успешно закрывать PowerPoint после выполнения всех операций. Если проблема сохраняется, рассмотрите возможность обновления версии Microsoft Office и проверку наличия исправлений.

Оцените материал
Добавить комментарий

Капча загружается...