您好,社区, 我试图通过循环复制粘贴来简化代码。 以下代码成功执行以下操作:1)从一种产品刷新一个单元格,然后2)将刷新后的表格复制到特定的幻灯片编号。
我需要将过程复制7遍-而不是使用冗长的代码,我认为我可以使用以下语句循环条件。 -刷新乘积(从8到1),计算 -然后将Excel表格复制粘贴到其幻灯片中 组合是这样的。 产品(表格)转到演示(幻灯片) 产品8转到幻灯片9 产品7转到幻灯片8等。
Option Explicit
Sub ExportToPPT()
Dim ppApp As PowerPoint.Application
Set ppApp = New PowerPoint.Application
Dim Sel As Range
Dim source As Range`
Workbooks("WWDWT.xlsm").Activate
Sheets("Graph Data").Select
Range("E4").Value = "8"
Application.Calculate
Set Sel = Selection
Set source = ActiveWorkbook.Sheets("waterfall").Range("D1")
ActiveWorkbook.Sheets("waterfall").Range("D1:AE40").Copy
Set ppSlide = ppPres.Slides(9)
ppSlide.Shapes.PasteSpecial ppPasteBitmap
End Sub
我如何循环Range("E4").Value = "8"
来更改为7,6,5,4 ...并将它们分别分配给Set ppSlide = ppPres.Slides(9)
,其后为Slide(8),7,6, 5等
预先感谢所有人的帮助
答案 0 :(得分:1)
使用一个简单的For
循环,如下所示:
Sub ExportToPPT()
...
Dim i as Long
For i = 8 to 1 Step - 1
Workbooks("WWDWT.xlsm").Activate
Sheets("Graph Data").Select
Range("E4").Value = i
Application.Calculate
Set Sel = Selection
Set source = ActiveWorkbook.Sheets("waterfall").Range("D1")
ActiveWorkbook.Sheets("waterfall").Range("D1:AE40").Copy
Set ppSlide = ppPres.Slides(i + 1)
ppSlide.Shapes.PasteSpecial ppPasteBitmap
Next i
End Sub
但是请注意,通常不需要使用Activate
和Select
。您可以简化
Workbooks("WWDWT.xlsm").Activate
Sheets("Graph Data").Select
Range("E4").Value = i
到
Workbooks("WWDWT.xlsm").Sheets("Graph Data").Range("E4").Value = i
您永远不会使用Sel
中的Set Sel = Selection
,所以也许您可以摆脱它(还有source
吗?)
我猜ActiveWorkbook
实际上也是Workbooks("WDWT.xlsm")
...