Microsoft VBA Powerpoint IndentLevel не считает должным образом - PullRequest
0 голосов
/ 12 марта 2020

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

Форма заголовка

  • Пример:
    • Элемент 1
      • Элемент 2
    • Элемент 3
  • Следующий пример:

Мне нужно, чтобы он был указан в словарь как

Example : [Item 1, Item 2, Item 3]

Я использую команду VBA через win32com.client и EnsureDispatch. Команда выглядит следующим образом:

indent_level = pp.ActivePresentation.Slides(sl).Shapes(sh).TextFrame.TextRange.Paragraphs(pi).IndentLevel

с sl, sh, а pi - значения для текущего слайда, фигуры и абзаца.

Однако при запуске этого кода он обрабатывает первый маркер второй фигуры (содержащий содержимое слайда) как какое-то безумное значение. На одном компьютере он вычислил значение отступа равным 32768, а на другом -2765987431. Просто абсурдно. Кажется, что это первая пуля любой формы после титульного слайда, которая испортилась.

Кроме того, это в свою очередь приводит к задержке всех результатов на 1. Я думаю, что это видно легче, чем объяснено:

Ожидается: 1, 2, 3, 2, 1

Факт: 32768, 1, 2, 3, 2

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

1 Ответ

0 голосов
/ 13 марта 2020

Я понял это, ребята. Проблема была в моих значениях, считающих текущий слайд, форму и абзац. Команда:

Enumerate (x)

Начинает считать с 0. Команда IndentLevel не понравилась параграфу 0, и задержка была вызвана тем, что первая строка фактически является параграфом 1. Продолжайте.

...