Создание Powerpoint из Excel и вставка текстового поля

Я пытаюсь создать powerpoint (с шаблонами) из Excel (VBA) и добавить текстовое поле для каждого слайда.

Строка кода, в которой я хочу добавить текстовое поле, не работает с индексом за пределами / Нет активного представления. Что здесь не так? Индекс слайда должен быть в порядке – нет изменений, если я установлю индекс вручную.

Dim PowerPointApp As Object Set PowerPointApp = CreateObject("PowerPoint.Application") PowerPointApp.Visible = True Set objP = PowerPointApp.Presentations.Add objP.ApplyTemplate "" & Table1.Range("A1").Value & "draft.pptx" PowerPointApp.ActivePresentation.Slides.Add 1, ppLayoutTitle For i = 1 To 10 objP.ApplyTemplate "" & Table2.Range("A1").Value & "template.pptx" PowerPointApp.ActivePresentation.Slides.Add i + 1, ppLayoutBlank PowerPointApp.ActivePresentation.Slides(i + 1).Select Table3.ChartObjects(i).CopyPicture PowerPointApp.ActivePresentation.Slides(i + 1).Shapes.Paste PowerPointApp.ActivePresentation.Slides(i + 1).Shapes(1).Top = 150 PowerPointApp.ActivePresentation.Slides(i + 1).Shapes(1).Left = 50 PowerPointApp.ActivePresentation.Slides(i + 1).Shapes(1).Width = 400 PowerPointApp.ActivePresentation.Slides(i + 1).Shapes(1).Height = 300 'Exception occurs here PowerPointApp.ActivePresentation.Slides(i + 1).Shapes.AddTextbox(msoTextOrientationHorizontal, Left:=100, Top:=100, Width:=200, Height:=50).TextFrame.TextRange.Text = "Text" Next i 

Проблема в вашей ситуации связана с типом привязки, который вы используете – поздним связыванием. В таких ситуациях некоторые константы VBA не распознаются, и они рассматриваются как переменные.

Во-первых – если вы установите для редактора VBE требуемый режим require variable declaration тогда вы узнаете эту проблему раньше, потому что все три константы vba, которые я могу найти в вашем коде, были бы отмечены как переменные:

  ppLayoutTitle ppLayoutBlank msoTextOrientationHorizontal 

Во-вторых – чтобы избежать проблемы, вам нужно преобразовать все вышеперечисленные константы в числа, которые:

  ppLayoutTitle =1 ppLayoutBlank =12 msoTextOrientationHorizontal =1 

в этом случае:

 PowerPointApp.ActivePresentation.Slides.Add 1, 1 'ppLayoutTitle PowerPointApp.ActivePresentation.Slides.Add i + 1, 12 'ppLayoutBlank PowerPointApp.ActivePresentation.Slides(i + 1).Shapes.AddTextbox(1, Left:=100, Top:=100, Width:=200, Height:=50).TextFrame.TextRange.Text = "Text" 

В-третьих, почему он работал на первую из двух констант? Потому что оба признаны как переменные со значением равным 0. И в обеих ситуациях 0 был принят параметр для типов слайдов. Но 0 не было принято для типа TextBox.

  • Откройте специальный рабочий лист Excel из Powerpoint через VBA
  • Автоматическое расширение / сокращение диапазонов строк диаграммы Excel в слайдах PPT
  • VBA Как я могу повторить код на каждом слайде, чтобы изменить поле FIRST?
  • Документ PowerPoint извлекает точки данных из XML / Excel
  • Откройте презентацию PowerPoint из Excel с помощью VBA, а затем установите эту презентацию в переменную
  • нечеткое совпадение
  • Программно создавать слайды PowerPoint PowerPoint из данных Excel
  • VBA: почему я получаю «Shapes (неизвестный член): недопустимый запрос» при копировании таблицы в точку питания
  • Что такое правильный тип mime для docx, pptx и т. Д.?
  • Код с использованием библиотеки объектов PowerPoint 15.0 не работает на машинах с библиотекой 14.0
  • Вывод данных из таблицы excel на несколько слайдов Powerpoint
  • Давайте будем гением компьютера.