VBA Do While循环宏复制幻灯片和更改powerpoint中的图片时出现问题
我正在powerpoint中尝试我的第一个宏。我只是想复制一张“参考”幻灯片并替换一张图片。我将对文件夹中的所有图片执行此操作。我的脚本添加了所有幻灯片,然后将所有图片添加到最后一张幻灯片中。我不明白为什么会出现这种情况,因为重复的幻灯片代码和添加图片代码在同一个while循环中。有人能告诉我为什么吗VBA Do While循环宏复制幻灯片和更改powerpoint中的图片时出现问题,vba,powerpoint,Vba,Powerpoint,我正在powerpoint中尝试我的第一个宏。我只是想复制一张“参考”幻灯片并替换一张图片。我将对文件夹中的所有图片执行此操作。我的脚本添加了所有幻灯片,然后将所有图片添加到最后一张幻灯片中。我不明白为什么会出现这种情况,因为重复的幻灯片代码和添加图片代码在同一个while循环中。有人能告诉我为什么吗 Sub LoopThroughFiles() Dim StrFile As String Dim Folder As String Dim sld As Slide
Sub LoopThroughFiles()
Dim StrFile As String
Dim Folder As String
Dim sld As Slide
Dim referencesld As Slide
Set referencesld = ActivePresentation.Slides(1)
Dim i As Integer
Dim shp As Shape
i = 1
Folder = "c:\E1B8\ScriptTesting\MISC\PPT\SampleData2\"
StrFile = Dir(Folder & "*")
Set referencesld = ActivePresentation.Slides(1)
Set shp = referencesld.Shapes(5)
Do While Len(StrFile) > 0
Debug.Print Folder & StrFile
referencesld.Duplicate
i = i + 1
Set sld = ActivePresentation.Slides(i)
With shp
sld.Shapes.AddPicture(Folder & StrFile, msoFalse, msoTrue, .Left, .Top, .Width, .Height).IncrementRotation 360#
End With
sld.Shapes(5).Delete
StrFile = Dir
Loop
End Sub
谢谢 复制幻灯片时可以使用变量,忘记“i”变量,不需要: 删除这些行
referencesld.Duplicate
i = i + 1
Set sld = ActivePresentation.Slides(i)
在此处插入“Set sld=referencesld.Duplicate”
...
Debug.Print Folder & StrFile
Set sld = referencesld.Duplicate
With shp
sld.Shapes.AddPicture(Folder & StrFile, msoFalse, msoTrue, .Left, .Top, .Width, .Height).IncrementRotation 360#
End With
...
未经测试
您可以在中看到“重复”引用
旁白:我认为在参数(形状)上使用“with”关键字而不是正在处理的对象(幻灯片)是很奇怪的
[已编辑:明确了解要做什么]
我希望能帮上忙。那么sld是什么类型的变量呢?N/M显然我不需要申报。这成功了,谢谢!我真的不知道这些物体,但是:sld是幻灯片,shp是形状。看起来你在第一张幻灯片中形状5的相同位置和尺寸上创建了一个新形状,然后删除了形状5,只保留在他位置上创建的形状。哦,现在我收到了你的评论!你已经申报了sld。我的意思是,在asnwer上,你应该删除三行“referencesld.Duplicate”直到“Set sld=…”并且只保留“Set sld=referencesld.Duplicate”。你是对的。我在复制的幻灯片中添加了一张具有参考图片尺寸的新图片,然后从复制的幻灯片中删除参考图片。