我创建了一个Excel宏,该宏处理excel中的一些数据(每个迭代两个值),将数据引入一个范围(每个迭代两个单元格),并将该范围作为图像(形状)复制/粘贴到给定的PowerPoint中在给定的最高/最低值处滑动。
宏可以按预期工作,但是随着粘贴形状的数量增加,跳过随机形状的机会也会增加(没有错误消息)。我已经尝试过几次代码,但从未经历过相同的结果:有时会丢失两个或三个形状,有时会丢失八个,有时甚至都不见...
我在每次粘贴之后都使用DoEvents,并且(以防万一它有帮助)将睡眠函数定义为:“公共声明子睡眠库“ kernel32”(ByVal dwMilliseconds只要长)”
我有一种方法可以将所有粘贴的图像从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
答案 0 :(得分:0)
我想到了一个足够简单的解决方案,显然可以解决问题:
oldCount = mySlide.Shapes.Count
' Pasting and verifying that it was done successfully
While (mySlide.Shapes.Count <= oldCount)
mySlide.Shapes.PasteSpecial DataType:=2
DoEvents
Wend
至此,仅检查形状数量是否已解决就可以解决问题。