簡體   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