繁体   English   中英

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

[英]Pasting multiple shapes in a Powerpoint Slide using VBA-Excel

我创建了一个Excel宏,该宏可处理excel中的一些数据(每个迭代两个值),将数据引入一个范围(每个迭代两个单元格),并将该范围以图像(形状)的形式复制/粘贴到给定的PowerPoint幻灯片中。给定最高/最低值。

宏可以按预期工作,但是随着粘贴形状的数量增加,跳过随机形状的机会也会增加(没有错误消息)。 我已经尝试了几次代码,但从未经历过相同的结果:有时会丢失两个或三个形状,有时会丢失八个,有时甚至没有一个...

我在每个粘贴之后都使用DoEvents,并且(以防万一它有帮助)使用了一个定义为:“公共声明子睡眠库“ 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

到目前为止,仅检查形状数量是否增加就解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM