Замена данных Powerpoint из Excel с помощью VBA - PullRequest
0 голосов
/ 05 августа 2020

У меня есть несколько «таблиц» в Excel, которые я экспортирую в PowerPoint каждую неделю (я говорю «таблицы», потому что на самом деле это просто диапазоны ячеек, а не таблицы). Прямо сейчас у меня есть макрос, который каждую неделю удаляет все фигуры из PowerPoint, а затем другой макрос для экспорта таблиц в PowerPoint. Проблема в том, что он удаляет все из PowerPoint, включая заголовки и комментарии к слайдам. Итак, теперь я пытаюсь написать код, который просто заменяет таблицы предыдущих недель. Пока что это код, который у меня есть, но он не работает, когда я добираюсь до

pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange = Sheet2.Cells(r, c).Value

. Я предполагаю, что он не работает, потому что диапазон ячеек на самом деле не является таблицами? В любом случае, есть ли у кого-нибудь совет, как заменить данные за предыдущие недели? Я борюсь здесь

Sub UpdateTables()

    Dim pptapp As New PowerPoint.Application
    Dim pptpress As PowerPoint.Presentation
    
    Dim left As Double
    Dim top As Double
    Dim height As Double
    Dim width As Double
    
    Dim r As Integer
    Dim c As Integer
    
    Set pptpress = pptapp.Presentations.Open("xxxxxx")

    'Table update
    For r = 4 To 30
    
     For c = 2 To 12
     
        pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange = Sheet2.Cells(r, c).Value
        
    Next c
   Next r


End Sub

Ответы [ 2 ]

0 голосов
/ 18 августа 2020

Чтобы заменить старые формы (или в вашем случае: таблицы), вы можете использовать маркер или временную метку, чтобы определить, что нужно удалить. Отличный способ для этого - теги в PowerPoint. Вы можете прикрепить их к презентациям, слайдам и фигурам (может быть, даже больше). Они невидимы для пользователя, но могут быть прочитаны / записаны с помощью кода (например, VBA).

Это то, что вам нужно искать: https://docs.microsoft.com/en-gb//office/vba/api/powerpoint.tags

0 голосов
/ 15 августа 2020

Я полагаю, это не работает, потому что диапазон ячеек на самом деле не является таблицами?

Да. Тот факт, что фигура называется «Изображение 8», также является подарком. Скорее всего, это изображение EMF / WMF / et c, которое было вставлено в слайд PPT.

Как предлагает @Dan, может быть проще всего вставить новую форму таблицы и работать с ней. Или, если у вас есть определенный формат таблицы, который вам нужно сохранить, добавьте таблицу на слайд вручную, отформатируйте ее, а затем пусть ваш код поместит в нее данные.

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