Как заставить Shapes.HasTitle найти все заголовки в презентации (VBA, .ppt)? - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь извлечь все заголовки из презентации в таблицу Excel с указателем страниц. Мой код работает относительно хорошо в целом, но, к сожалению, не подбирает каждый заголовок.

Я в основном использовал метод Shapes.HasTitle, мой код немного неаккуратный (цикл один раз, чтобы установить размер массива, который будет использоваться, а затем заполнить массив), но в противном случае все относительно простопроизводится в ppt, который был на языке, отличном от английского. Любые идеи, чтобы заставить это работать немного лучше? В настоящее время он приближается к 70% заголовков (тогда мне нужно выяснить, как обращаться с текстовыми полями, которые на самом деле являются заголовками)

1 Ответ

0 голосов
/ 23 октября 2019

Это позволит получить все заголовки в обычной презентации. Каждая фигура проверяется на наличие текста и заполнителя. Если оба значения верны, он проверяет формат заполнителя заголовка:

Sub GetTitles()
  Dim oSlide As Slide, oShape As Shape
  For Each oSlide In ActivePresentation.Slides
    For Each oShape In oSlide.Shapes
      If oShape.Type = msoPlaceholder And oShape.TextFrame.HasText Then
        If oShape.PlaceholderFormat.Type = ppPlaceholderTitle Or _
        oShape.PlaceholderFormat.Type = ppPlaceholderCenterTitle Then
          MsgBox oShape.TextFrame.TextRange.Text
        End If
      End If
    Next oShape
  Next oSlide
End Sub

Если у вас есть колоды, в которых пользователи переназначают заголовки для текстовых полей или наоборот, вам, возможно, придется проводить дополнительную проверку в зависимости от размера текста. используется и, чтобы увидеть, находится ли позиция формы в правой области для заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...