Я думаю, это просто, но, поскольку я очень новичок в VBA, я не могу понять это.Открывая внешние .pptx и .xlsx один раз и запуская несколько подпрограмм на них
У меня есть код, который был предназначен для копирования данных из третьей таблицы Excel и вставки его в несколько графиков презентации Power Point.
Этот мир кода выше открывает презентацию Power Point и электронную таблицу Excel. dir_pptx
и dir_xlsx
- соответствующие пути к файлам.
Set ObjPPT = CreateObject("PowerPoint.Application")
Set ObjPresentation = ObjPPT.Presentations.Open("" & dir_pptx & "")
Workbooks.Open Filename:=dir_xlsx
Дело в том, что этот процесс делится на ~ 6 независимых сабвуферов (и это должно быть, как это, я не хочу, чтобы изменить его), так что каждый раз, когда я должен обновить презентацию, я должен запустить sub1
, сохранить/закрыть оба .pptx
и .xlsx
файлы, запускать sub2
, сохранить/закрыть, запустить sub3
, сохранить/закрыть и так далее, потому что в противном случае sub2
снова открывает файлы и обновлять его, отменив изменения я уже сделанные в sub1
.
Мой вопрос: как изменить этот код для первой проверки, если файлы уже открыты, и 1. Если это не так, откройте его; 2. Если это так, не открывайте его снова и не используйте процедуру, использующую их.
Спасибо @SteveRindsberg. Это похоже на то, что я хочу, но, к сожалению, это не работает. Когда я запустил sub 2, pptx снова был открыт как файл только для чтения, как моя текущая проблема. – AYJK
Какой синтаксис вы использовали? Set objPresentation = PresentationObject в вашей основной подпрограмме - это то, что должно работать. –
Правда, может быть, я ничего не поймаю. Это то, что я делаю: 'Sub1': 1. Ваш код + xlsx, который я упоминаю в своем вопросе 2. Процедуры копирования/вставки, активирующие файлы xlsx и pptx с помощью' Workbooks (xlsx_name). Таблицы (1). Активировать '' Установить ObjSlide = ObjPresentation.Slides (slds (i)) '3. End sub. Для следующих подсистем процесс практически такой же. – AYJK