Вставка нескольких фигур в слайд Powerpoint с использованием VBA-Excel - PullRequest
0 голосов
/ 06 июля 2018

Я создал макрос Excel, который обрабатывает некоторые данные в Excel (два значения на итерацию), вводит эти данные в диапазон (две ячейки на итерацию) и копирует / вставляет этот диапазон как изображение (фигуру) в заданную PowerPoint. Слайд с заданным верхним / левым значением.

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

Я использую DoEvents после каждой вставки и (на всякий случай, если это помогает) функцию Sleep, определяемую как: "Public Declare Sub Sleep Lib" kernel32 "(ByVal dwMilliseconds As Long)"

Есть ли способ объединить все вставленные изображения в одно большое изображение на слайде из Excel? У кого-нибудь есть другие предложения?

Следующий код был взят из макроса, и для простоты я опустил остальные. Этот код находится внутри двух вложенных циклов For.

'Variable calculations
LastRow = .Cells(.rows.Count, .Range("statusCol").Column).End(xlUp).Row
LastCol = .Cells(61, .Columns.Count).End(xlToLeft).Column
Set rng = .Range(.Cells(61, .Range("statusCol").Column), .Cells(LastRow, LastCol))

rng.Copy

If ExcelApp.ClipboardFormats(1) Then    ' Check clipboard contents

    mySlide.Shapes.PasteSpecial DataType:=2  
    DoEvents

    ' Changing the pasted cell's position and size
    Set myShape = mySlide.Shapes(mySlide.Shapes.Count)
    With myShape
        .LockAspectRatio = msoTrue
        .Left = TableLeft
        .Top = TableTop
        .Height = 20 * rng.rows.Count                  
    End With
End If

1 Ответ

0 голосов
/ 18 июля 2018

Я подумал о достаточно простом решении, которое, по-видимому, добилось цели:

oldCount = mySlide.Shapes.Count
' Pasting and verifying that it was done successfully
While (mySlide.Shapes.Count <= oldCount)
    mySlide.Shapes.PasteSpecial DataType:=2  
    DoEvents
Wend

Пока что только проверка того, увеличилось ли количество фигур, решила проблему.

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