У меня есть функция PowerPoint VBA, которая открывает презентации, копирует слайды в активную презентацию, а затем закрывает исходную презентацию. Он отлично работал в 2010 году, но не смог в 2013 году (все в Windows 7), если он пытается открыть одну и ту же презентацию более одного раза. Мне кажется, что после выдачи команды presentation.close окно закрывается, но файл остается заблокированным до тех пор, пока код VBA не завершится. Поэтому, если код пытается снова открыть этот файл, он возвращает ошибку: «Метод« Открыть »объекта« Презентации не удались »Макрос PowerPoint 2013 сохраняет файл открытым после закрытия команды
Вот упрощенная форма функции, которую я запускаю, которая ведет себя одинаково. В PowerPoint 2010 у меня был тест коллеги, и он работает нормально. У меня также есть коллега, проверяющий его в 2013 году, чтобы убедиться, что это не что-то с моей конкретной установкой.
Sub testopen()
Dim ppFile As Presentation
Dim i As Integer
Const fpath = "C:\test.pptx"
For i = 1 To 2
Set ppFile = Application.Presentations.Open(fpath)
ppFile.Close
Set ppFile = Nothing
Next i
End Sub
Файл test.pptx - это просто пустая презентация. В режиме отладки я вижу, что файл открывается и закрывается в первом цикле, затем во втором цикле команда open завершается с ошибкой, и я вижу в проводнике Windows, что скрытый временный файл все еще существует, показывая, что файл все еще открыт, пока я не выйду код VBA. Я также проверил, что файл открыт, добавив функцию для проверки статуса открытия файла.
Я потратил, вероятно, час на поиски в googling и не могу найти никаких других описаний этой проблемы. Я уверен, что смогу реализовать обходной путь, но это сводит меня с ума, что я не могу найти никаких других сообщений о кажущейся такой простой проблеме. Любые предложения приветствуются! Благодарю.
Это может произойти, если файл, который вы открываете, находится в папке, которая синхронизирована ... т.е. папке с Dropbox и т.п. –
Эй Стив, я могу воспроизвести это с любой презентацией в любой папке с PPT 2013/2016. Похож на ошибку. –
The Presentations.Count по-прежнему показывает, что файл открыт без Windows. Если вызывается NewWindow, он откроет окно презентации. –