使用 VBA-Excel 在 Powerpoint 幻灯片中粘贴多个形状

Pasting multiple shapes in a Powerpoint Slide using VBA-Excel

我创建了一个 Excel 宏,它处理 excel 中的一些数据(每次迭代两个值),将该数据引入一个范围(每次迭代两个单元格)和 Copy/Pastes该范围作为给定 Top/Left 值的给定 PowerPoint 幻灯片中的图像(形状)。

宏按预期工作,但随着粘贴形状数量的增加,跳过随机形状的机会也会增加(没有错误消息)。我已经多次尝试该代码,但从未遇到过相同的结果:有时缺少两个或三个形状,有时缺少八个,有时 none...

我在每次粘贴后使用 DoEvents 和(以防万一)定义为睡眠函数:"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

我想到了一个足够简单的解决方案,显然已经成功了:

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

至此只要检查形状数量是否增加就解决了问题。