VBA Do While循环宏复制幻灯片和更改powerpoint中的图片时出现问题

VBA Do While循环宏复制幻灯片和更改powerpoint中的图片时出现问题,vba,powerpoint,Vba,Powerpoint,我正在powerpoint中尝试我的第一个宏。我只是想复制一张“参考”幻灯片并替换一张图片。我将对文件夹中的所有图片执行此操作。我的脚本添加了所有幻灯片,然后将所有图片添加到最后一张幻灯片中。我不明白为什么会出现这种情况,因为重复的幻灯片代码和添加图片代码在同一个while循环中。有人能告诉我为什么吗 Sub LoopThroughFiles() Dim StrFile As String Dim Folder As String Dim sld As Slide

我正在powerpoint中尝试我的第一个宏。我只是想复制一张“参考”幻灯片并替换一张图片。我将对文件夹中的所有图片执行此操作。我的脚本添加了所有幻灯片,然后将所有图片添加到最后一张幻灯片中。我不明白为什么会出现这种情况,因为重复的幻灯片代码和添加图片代码在同一个while循环中。有人能告诉我为什么吗

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”。你是对的。我在复制的幻灯片中添加了一张具有参考图片尺寸的新图片,然后从复制的幻灯片中删除参考图片。