【问题标题】:Selecting and deleting textboxs with specific text string in powerpoint在PowerPoint中选择和删除带有特定文本字符串的文本框
【发布时间】:2019-10-12 00:47:48
【问题描述】:

我正在尝试在 powerpoint 中选择一个带有特定单词的文本框并将其删除。文本框出现在演示文稿中的每张幻灯片上,我想删除演示文稿中每张幻灯片上的每个文本框。带有我要删除的单词的文本框中包含单词“Page”。

我尝试使用在互联网上看到的其他一些代码,但是当我运行代码时,演示文稿没有任何反应。想知道要删除的文本框缺少什么?

我已经尝试了一些代码:

Sub deletor()
    On Error Resume Next
    Dim osld As Slide
    Dim L As Long
    For Each osld In ActivePresentation.Slides
        For L = osld.Shapes.Count To 1 Step -1
            If osld.Shapes(L).HasTextFrame Then
                If osld.Shapes(L).TextFrame.HasText Then
                    ' obviously use their address
                    If LCase(osld.Shapes(L).TextFrame.TextRange) Like LCase("Page") Then
                        osld.Shapes(L).Delete
                    End If
                End If
            End If
        Next
    Next
End Sub

没有错误消息,只是在 excel 中没有操作(带有单词 page 的文本框仍然存在)。这让我假设宏正在运行,但没有做我试图编写的代码。

【问题讨论】:

  • 删除 On Error Resume Next 并重新运行。有任何错误信息吗?
  • 删除On Error Resume Next时没有出现错误

标签: vba powerpoint


【解决方案1】:

问题出在一行

If LCase(osld.Shapes(L).TextFrame.TextRange) Like LCase("Page") Then

Like 运算符使用通配符模式。我猜你想要的模式是

... Like "page*"

或

... Like "*page*"

无需LCase 将您正在编写的字符串作为文字值。

【讨论】:

  • 我合并了编辑,不幸的是,结果相同:没有对演示文稿完成任何操作。我想知道错误是否在 for 循环附近?
  • 我自己试过了,效果很好。在新的演示文稿中尝试并手动添加文本框。那应该行得通。从那里向后工作。
  • 我已经尝试在一个新的演示文稿中手动添加文本框但无济于事。我缩小范围,错误出现在 if 语句中,该语句试图识别类似的字符串 If LCase(osld.Shapes(L).TextFrame.TextRange) Like "*Page*" Then(如果我将此 if 语句注释掉,宏将运行并删除所有文本框)。我知道我们之前介绍过编辑现有代码,但是有没有其他方法可以使用 if 语句识别和比较文本框中的字符串与代码中的任意字符串?
  • 看看 InStr 函数。
猜你喜欢
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
相关资源
最近更新 更多