[英]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.