Powerpoint VBA从当前幻灯片或所有幻灯片的文本框和形状中删除文本

Powerpoint VBA从当前幻灯片或所有幻灯片的文本框和形状中删除文本,vba,powerpoint,ms-office,Vba,Powerpoint,Ms Office,需要帮助,我正在制作一个powerpoint vba宏,可以根据我的选择从所有幻灯片或当前幻灯片中“删除文本”,我有许多文本框需要立即清除,我还希望它能够选择是从所有幻灯片中删除还是仅删除当前幻灯片,但是,我不断收到以下错误:对于Application.ActiveWindow.View.Slide中的每个sh,在第行的“Object不支持此属性或方法”,作为VBA的新手,我刚刚从Microsoft复制了一些代码,因此我真的不知道我做错了什么,非常感谢您的帮助 Sub ClearAllTextB

需要帮助,我正在制作一个powerpoint vba宏,可以根据我的选择从所有幻灯片或当前幻灯片中“删除文本”,我有许多文本框需要立即清除,我还希望它能够选择是从所有幻灯片中删除还是仅删除当前幻灯片,但是,我不断收到以下错误:对于Application.ActiveWindow.View.Slide中的每个sh,在第
行的“Object不支持此属性或方法”,作为VBA的新手,我刚刚从Microsoft复制了一些代码,因此我真的不知道我做错了什么,非常感谢您的帮助

Sub ClearAllTextBox()
    Dim sh          As Shape
    Dim sld         As Slide
    Dim SldDelType  As Boolean
    
    SldDelType = False
    
    Select Case MsgBox("Delete Texts From All Slides?", vbExclamation + vbYesNoCancel)
        Case vbYes:
            SldDelType = True
        Case vbNo:
            SldDelType = False
        Case vbCancel:
            Exit Sub
    End Select
    
    Select Case MsgBox("Are you Sure you want To Delete " & vbNewLine & "all Text from all Shapes/TextBoxes?", vbExclamation + vbYesNo)
        Case vbNo:
            Exit Sub
        Case vbYes:
            If SldDelType Then
                For Each sld In ActivePresentation.Slides
                    For Each sh In sld.Shapes
                        If sh.HasTextFrame Then
                            sh.TextFrame.DeleteText
                        End If
                    Next sh
                Next sld
            Else:
                For Each sh In Application.ActiveWindow.View.Slide
                    If sh.HasTextFrame Then
                        sh.TextFrame.DeleteText
                    End If
                Next sh
            End If
    End Select
End Sub

如果你想在一张幻灯片的所有形状上循环,你需要这样说。你已经在上半部分做得很好了,在那里你为sld中的每个sh编写了
。形状
。如果你想在一张幻灯片的所有形状上循环,你也需要这样做:

    (...)
Else
    For Each sh In Application.ActiveWindow.View.Slide.Shapes
        If sh.HasTextFrame Then
        (...)
        End If
    Next sh
End If
或者使用幻灯片变量拆分该长语句:

Else
    Set sl = Application.ActiveWindow.View.Slide
    For Each sh sl.Shapes
        (...)
    Next sh
End If

如果你想在一张幻灯片的所有形状上循环,你需要这样说。你已经在上半部分做得很好了,在那里你为sld中的每个sh编写了
。形状
。如果你想在一张幻灯片的所有形状上循环,你也需要这样做:

    (...)
Else
    For Each sh In Application.ActiveWindow.View.Slide.Shapes
        If sh.HasTextFrame Then
        (...)
        End If
    Next sh
End If
或者使用幻灯片变量拆分该长语句:

Else
    Set sl = Application.ActiveWindow.View.Slide
    For Each sh sl.Shapes
        (...)
    Next sh
End If

应用程序中的每个sh.ActiveWindow.View.Slide.Shapes
应用程序中的每个sh.ActiveWindow.View.Slide.Shapes