Вопрос

Если я настраиваю шаблон на слайдах PowerPoint, которые содержат все текстовые поля, которые мне нужны, какой визуальный базовый я использую для ввода текста, который я хочу в эти текстовые поля?

Мне легче использовать шаблон, потому что эти трусы PPT содержат (или необходимо содержать) много данных:

  • Как ввести текст в эти текстовые поля
  • Как изменить шрифт, размер, Fontbold и т. д. конкретного текстового поля?
  • Есть ли способ определить «имя» текстового поля/формы («текстовое поле 52»), кроме записи макросов после макросов и выбрать текстовое поле, просто чтобы получить имя объекта из выбора?
  • Если я использую макрос для определения VBA, почему он не будет работать, чтобы использовать это как VBA? VB, который я получаю с макроса, кажется, есть активное. Выбор, который, кажется, не работает как процедура VBA, потому что он не знает, что выбрать ???? Я думаю

Что я хочу сделать, так это создать конечную игру PPT из Access, используя шаблон. В форме доступа я хочу иметь несколько текстовых поле, которые передают информацию в текстовые поля PPT на слайде.

Я знаю, как запустить шаблон (или новую презентацию) из доступа, и как добавить новые элементы (слайды, графики, диаграммы, текст), но я не знаю, как изменить ранее существовавшие текстовые поля !!

Пожалуйста, помогите .... моя работа нуждается в этом, как вчера!

Спасибо, как всегда!

Это было полезно?

Решение

Вы можете получить доступ к формам по имени, как в:

Dim oSlide As Slide
Set oSlide = ActivePresentation.Slides(1)

Dim oShape As Shape
Set oShape = oSlide.Shapes(strShapeName)

Dim oTextRange As TextRange
Set oTextRange = oShape.TextFrame.TextRange

oTextRange.Text = "this is some text"

oTextRange.Font.Bold = msoTrue

Обратите внимание, что все, что вы хотите сделать, просто запишите макрос, который вы делаете через пользовательский интерфейс, и скопируйте это. Вы правы, что записанный макрос будет использовать Selection объект много, но это легко исправить - просто получите ссылку на соответствующую Shape объект (или что -то еще), а затем подчинить это в сгенерированном коде.

Так, например, если записанный макрос для изменения цвета заполнения формы таков:

With ActiveWindow.Selection.ShapeRange
    .Fill.Visible = msoTrue
    .Fill.Solid
    .Fill.ForeColor.RGB = RGB(255, 0, 0)
    .Fill.Transparency = 0#
End With

... и вы хотите применить цвет наполнения к форме, на которую у вас уже есть ссылка на oShape, затем измените код на это:

With oShape
    .Fill.Visible = msoTrue
    .Fill.Solid
    .Fill.ForeColor.RGB = RGB(255, 0, 0)
    .Fill.Transparency = 0#
End With

Чтобы получить текущее название формы, вы можете ввести в это в окне «Непосредственное» в редакторе VBA:

?ActiveWindow.Selection.ShapeRange(1).Name

Вы можете очень легко превратить это в (одинокий) макрос:

Sub ShowMeTheName()
    MsgBox ActiveWindow.Selection.ShapeRange(1).Name
End Sub

Обратите внимание, что я бы лично переименовал формы в нечто значимое, а не использовать имена по умолчанию. Просто поверните это в непосредственное окно:

ActiveWindow.Selection.ShapeRange(1).Name = "MyName"

... или создайте макрос, чтобы запросить имя.

Другие советы

Когда мне нужно автоматизировать Word или Excel (никто, с которым я знаю или работаю, не имеет никакого использования для PowerPoint), я открываю рассматриваемое приложение, включаю запись макроса и выполняю задачу, которую хочу автоматизировать. Затем я использую сгенерированный код в качестве основы для моего кода доступа. Часто это довольно простой процесс, иногда такой же простой, как копирование и вставка, а затем предварительно включать каждую строку с помощью объекта приложения, который я использую из доступа.

Если бы мне пришлось делать то, что вы делаете, именно так я бы начал, выполняя запись задачи, выполняемой интерактивно, а затем экспериментируя с какой частью кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top