Скопировать слайд powerpoint vba
Когда много людей работают над несколькими Презентации PowerPoint а потом нужно их объединить, в конце концов становится сложно. Основная причина — форматирование. Если команды не синхронизированы друг с другом, приведение их к одному формату станет болезненной задачей.
Microsoft PowerPoint предлагает собственное решение, такое же, как Word и Excel, которое позволит вам объединить несколько презентаций PowerPoint, сохранив при этом форматирование без изменений. Правильный способ сделать это — попросить всех использовать одну и ту же тему. Обязательно настройте тему PowerPoint в один файл, а затем поделитесь им со всеми.
Как объединить несколько презентаций PowerPoint
У нас есть три способа объединить несколько файлов PowerPoint. А первый хорош, когда у вас меньше чисел, а сохранение форматирования — основная цель. Второй может объединять любое количество файлов, имеющихся в папке.
- Метод повторного использования слайдов
- Метод кода VBA
- Скопируйте и вставьте слайды.
У каждого метода есть свои преимущества и недостатки. Выбирай с умом.
1]Метод повторного использования слайдов
Microsoft PowerPoint предлагает встроенный инструмент — Повторное использование слайдов. Он позволяет импортировать в презентацию один или несколько слайдов из другой, не открывая другой файл. Когда вы используете эту опцию, не забудьте выбрать опцию форматирования, особенно если вы хотите иметь ту же тему, что и исходный файл.
- Откройте новый файл Powerpoint или существующий, в котором вы хотите объединить слайды.
- Выберите слайд, после которого вы хотите вставить слайды из исходного файла.
- Идти к Главная> Новый слайд> Повторное использование слайда.
- Найдите и выберите файл, который вы хотите объединить. Затем нажмите кнопку со стрелкой.
- Это покажет все стороны, доступные на этом слайде.
- Щелкните слайд, который хотите вставить, и он будет немедленно добавлен к слайду.
- Если вы хотите, чтобы формат был точно таким же, как у исходного слайда, установите флажок «Сохранить исходное форматирование. »
Любой добавленный сюда слайд является копией. Исходный файл останется нетронутым, и в него не будут внесены никакие изменения. Любые изменения, внесенные в объединенный документ, не будут доступны в исходном файле.
Одна из лучших частей импорта с использованием этого метода заключается в том, что он сохранит всю анимацию или переходы. Раньше этого не было, и нужно было использовать метод Object, а затем несколько конфигураций, чтобы заставить его работать. Объектный метод полезен только в том случае, если вы хотите упаковать несколько файлов в один.
2]Метод кода VBA
Поскольку нет собственного метода для объединения множества презентаций PowerPoint, нам придется использовать код VBA, точно так же, как мы это делали для объединения файлов Excel. Он прост и работает лучше по сравнению с кодом VBA, который мы использовали для Excel. Код работал у меня хорошо, и я смог объединить 3 файла PowerPoint на 60 слайдов.
В новом или существующем файле PowerPoint, в котором вы хотите объединить все презентации, нажмите ALT + F11.
Щелкните Вставить> Модуль и вставьте код в этот модуль. Не беспокойтесь о его сохранении.
Внесите изменения, которые я выделил жирным шрифтом.
Нажмите F5, и он выполнит код
Он импортирует все слайды из всех файлов, доступных в этой папке. Однако он потеряет форматирование. Это самая большая проблема с кодом, но он может объединять любое количество файлов, что является его самым значительным преимуществом. Обязательно удалите код VBA после завершения импорта. Код пользователя PPTFAQ.c0m.
3]Копировать Вставить слайды
Я использую это иногда, когда есть несколько файлов, обычно меньше трех, и мне нужно скопировать из них только несколько слайдов. Хотя вы можете использовать Ctrl + C и Ctrl + V, но вы потеряете форматирование. Поэтому после копирования слайда щелкните правой кнопкой мыши раздел списка слайдов в конечном файле и выберите «Сохранить формат».
Я надеюсь, что всем этим методам было легко следовать, и вы смогли объединить несколько файлов PowerPoint.
Обязательно выберите между количеством файлов для слияния и темой слайда в соответствии с вашими потребностями.
Вклеить слайды на буфере обмена в коллекцию Слайды для презентации. Укажите, где нужно вставить слайды с аргументом Index . Возвращает объект SlideRange , который представляет вставить объекты. Каждый вклеит слайд становится членом указанной коллекции слайдов .
Синтаксис
выражения. Вклейка (Индекс)
выражение Переменная, представляюная объект Slides .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Индекс; | Необязательный | 64-разрядное целое число. | Номер индекса слайда, который должен быть вклеит слайды на буфере обмена данными. Если этот аргумент опущен, слайды на буфере обмена будут вклеить после последнего слайда в презентации. |
Возвращаемое значение
Комментарии
Используйте свойство ViewType , чтобы настроить представление для окна перед вклейкой в него содержимого буфера обмена. В следующей таблице показано, что можно вклеить в каждое представление.
В этом представлении | Вы можете вклеить следующее из буфера обмена |
---|---|
Представление слайда или заметки на странице | Фигуры, текст или целые слайды. Если вставить слайд из буфера обмена, изображение слайда будет вставлено на страницу слайд, мастер или заметки в качестве встроенного объекта. Если выбрана одна фигура, вклеен текст будет придан тексту фигуры; если текст выбран, вклеив текст заменит выбор; Если выбрано что-либо другое, вставить текст будет в нем собственный текстовый кадр. Вклеитые фигуры будут добавлены в верхнюю часть z-order и не заменят выбранные фигуры. |
Представление outline | Текст или целые слайды. Нельзя вклеить фигуры в представление контура. Перед слайдом, содержателем курсора, будет вставлен вставлен слайд. |
Представление сортировки слайдов | Целые слайды. Нельзя вклеить фигуры или текст в представление сортировки слайдов. Вставка слайда будет вставлена на курсоре или после последнего слайда, выбранного в презентации. |
Пример
В этом примере отрезается слайды три и пять из презентации старых продаж, а затем вставляет их перед слайдом 4 в активной презентации.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Pastes the slides on the Clipboard into the Slides collection for the presentation. Specify where you want to insert the slides with the Index argument. Returns a SlideRange object that represents the pasted objects. Each pasted slide becomes a member of the specified Slides collection.
Syntax
expression.Paste (Index)
expression A variable that represents a Slides object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Index | Optional | Integer | The index number of the slide that the slides on the Clipboard are to be pasted before. If this argument is omitted, the slides on the Clipboard are pasted after the last slide in the presentation. |
Return value
Remarks
Use the ViewType property to set the view for a window before pasting the Clipboard contents into it. The following table shows what you can paste into each view.
Into this view | You can paste the following from the Clipboard |
---|---|
Slide view or notes page view | Shapes, text, or entire slides. If you paste a slide from the Clipboard, an image of the slide will be inserted onto the slide, master, or notes page as an embedded object. If one shape is selected, the pasted text will be appended to the shape's text; if text is selected, the pasted text will replace the selection; if anything else is selected, the pasted text will be placed in it is own text frame. Pasted shapes will be added to the top of the z-order and won't replace selected shapes. |
Outline view | Text or entire slides. You cannot paste shapes into outline view. A pasted slide will be inserted before the slide that contains the cursor. |
Slide sorter view | Entire slides. You cannot paste shapes or text into slide sorter view. A pasted slide will be inserted at the cursor or after the last slide selected in the presentation. |
Example
This example cuts slides three and five from the Old Sales presentation and then inserts them before slide four in the active presentation.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
I would like to perform following code, but make it runnable out of Excel!
Is there any chance to get the selected slide index without putting a macro into the PowerPoint file?
The Goal is basicly to allow the user to slected a certain Position in an core presentation and add slides out of a cloud into the certain Position, which he selected.
Does your code have a handle on the PowerPoint Application object? Your question would be easier to answer if you included the code you've got. Try pptApp.ActiveWindow.Selection.SlideRange.SlideIndex , where pptApp is the PowerPoint Application instance.
BTW, ActiveWindow.Selection.SlideRange.SlideIndex will throw an error if more than one slide is selected, or if no slide is selected (as can happen when the cursor is between slides in sorter view or in the thumbnail pane). Specifying the first slide in the range will solve the first problem: ActiveWindow.Selection.SlideRange(1).SlideIndex and forcing the view to Normal and back will generally force the selection onto the slide just prior in the second case.
2 Answers 2
Please try to use a possibly running instance of PowerPoint by this:
I added a VBA reference to "Microsoft PowerPoint x.x Object Library" for early binding and intellisense.
Here's the late binding alternative:
Here is an explanation of the early/late binding difference. If you want to implement both via conditional compilation as suggested in the comments, I found an explanation here.
Why use CreateObject(progId-that-hits-the-registry-to-locate-the-type) instead of New PowerPoint.Application , since the type is bound at compile-time?
If you meant to use the code late-bound, it would make for better example if you used conditional compilation to support both late and early binding just by setting a flag.
thank you guys a thousend times. Realy appreciate the Help!! Using the variable i bounded to PowerPoint application instead of the one that is linked to the presentation itself did the job for me !!
This is the Code i use now:
That code is dangerously ambiguous about what instance of PPT it's working with. Why to you need ppApp , when PowerPoint is already an active PowerPoint.Application instance? And if the PPT type library is referenced, you don't need to CreateObject , it's uselessly inefficient. just New it up. When the code stops running, make sure you bring up Task Manager and verify that all powerpoint.exe processes have cleanly exited. I suspect the PowerPoint instance might never exit if this code runs while PowerPoint is already open. Anyway, glad you got it working.
@MathieuGuindon As far as the best way of doing this, your suggestions are on target. But FWIW, PPT normally fire up multiple instances of itself, unlike Excel/Word. Checking TaskMan can be a bit misleading with some versions of PPT. If you have Win Explorer set to view previews and select a PPT file, the preview process will fire up a hidden instance of powerpnt.exe (it's powerpnt, not powerpoint, btw). Which can sometimes cause strange other problems because PPT knows it can only have one instance of itself and gets an upset tummy when there are two.
Данный материал основан и доработан по материалам оригинальной статьи "EasyTweaks - How to create and add slides to PowerPoint presentations with VBA".
Существует ли способ автоматизировать создание презентаций PowerPoint с нуля с последующим быстрым добавлением слайдов к существующей презентации? Мы подумали, что данную задачу для PowerPoint вполне под силу решить с помощью макросов. Однако, как известно, PowerPoint не включает средство записи макросов Macro Recorder (в отличие от Excel и Word, которые имеют встроенные средства записи макросов). Поэтому у нас остаётся лишь старый добрый Visual Basic for Application (VBA), который мы можем использовать для создания простых макросов для автоматизации PowerPoint. Разумеется, существуют и альтернативные варианты автоматизации PowerPoint, но они выходят за рамки данной статьи.
В этом кратком руководстве мы рассмотрим три различных варианта использования:
- Создание новой презентации (пустой или по шаблону);
- Добавление слайдов к существующей презентации;
- Сочетание двух предыдущих вариантов.
Создайте презентацию PowerPoint и сохраните ее с возможностью выполнения макросов (файл с расширением *.pptm).
Посмотрите на Ленту (Ribbon). Если в Ленте нет вкладки "Разработчик" (Developer), то перед началом написания кода необходимо включить эту вкладку (меню ленты File - Options).
Далее во вкладке Trust Center, включите возможность выполнения макросов в PowerPoint.
После того, как вы сделаете вкладку "Разработчик" (Developer) видимой для вашей ленты, перейдите на эту вкладку и нажмите кнопку Visual Basic (или просто нажмите Alt + F11), чтобы открыть Visual Basic IDE.
Макрос VBA для создания презентации и добавления слайдов
В редакторе Visual Basic щелкните правой кнопкой мыши VBAProject и выберете пункт вставки модуля (Insert > Module).
Вставьте следующий код во вновь созданный модуль:
Нажмите в меню File, а затем Save… При сохранении следует выбрать формат с поддержкой макросов (*.pptm):
Чтобы запустить код, нажмите Run, а затем выберите Run Sub/UserForm (или просто F5).
В итоге мы увидим созданный и открытый файл презентации.
Теперь редактор Visual Basic можно закрыть.
Как создавать и вставлять Фигуры (Shapes) в PowerPoint с помощью VBA
Захотелось автоматизировать довольно обыденную задачу по созданию слайдов PowerPoint. При автоматизации PowerPoint вы обычно работаете с коллекцией слайдов и фигур. Слайды говорят сами за себя, а фигуры - это почти все остальное, включая текстовые поля, кнопки действий, медиа-объекты, метки, изображения, выноски, блок-схемы и т.д.. Хотя мы будем демонстрировать приемы работы с PowerPoint, часть синтаксиса на самом деле вполне применима к Microsoft Word и Excel.
Приступим к работе с фигурами. Во-первых, давайте продолжим и откроем редактор VBA, нажав Alt + F11. Если вы следовали предыдущему руководству, у вас должен быть Module1 в вашем списке модулей.
Добавление текстового поля через VBA
Начнем с добавления вертикального текстового поля к нашему первому слайду презентации. Добавьте следующий код в Module1 , затем нажмите кнопку Сохранить (Ctrl + S) и запустите макрос (пункт меню Run Sub/User Form или просто нажмите F5).
Обратите внимание, что вы можете довольно легко изменить размер текстового поля с помощью VBA. В этом случае мы изменим размер первой фигуры на втором слайде, свободно меняйте код при необходимости.
Текстовые эффекты PowerPoint с VBA
Давайте теперь предположим, что мы хотим добавить текстовое поле ко всем слайдам в презентации, на этот раз немного более визуально привлекательное. Для этого мы будем использовать VBA для создания пользовательских текстовых эффектов, которые мы можем встроить в один или несколько слайдов презентации. Сначала мы пройдемся по слайдам презентации, а затем добавим текстовый эффект по мере необходимости.
Посмотрим, что получилось:
Обратите внимание, что вы можете использовать простой водяной знак для достижения этого конкретного результата.
Выноски PowerPoint с VBA
В нашем следующем примере мы добавим выноску ко второму слайду презентации.
Создание презентации PowerPoint из книги Excel
Рассмотрим ещё один случай, когда вы хотите создать презентацию PowerPoint прямо из электронной таблицы Excel. Вы можете использовать аналогичный метод в Word и других приложениях Microsoft Office.
Данный пример демонстрирует возможность вызова другого приложения MS Office из первоначально запущенного приложения (прим. пер.).
Сперва создайте новую книгу Excel и сохраните ее как книгу с макросами (файл с расширением *.xlsm).
Войдите в редактор Visual Basic Editor (меню ленты Developer > Visual Basic, либо сочетанием клавиш Alt+F11)
В редакторе VBE свяжите электронную таблицу с моделью данных PowerPoint, выбрав в меню (Tools > References), Microsoft PowerPoint Object Library.
Вставьте новый модуль VBA для внесения кода процедуры Visual Basic.
Вставьте приведенный ниже код VBA непосредственно в модуль VBA и нажмите иконку Save.
(При необходимости, вы можете внести свои изменения в сценарий.)
Вставьте кнопку прямо в электронную таблицу Excel (меню Developer > Insert, а затем выберите Button (Form Control)).
Привяжите в диалоговом окне процедуру VBA, созданную вами ранее, к вставляемой кнопке.
Читайте также: