在 MS PowerPoint 中查找并突出显示文本

2024-04-07

我使用此站点中的一些代码创建了一个宏,用于在 Word 文档上进行关键字搜索并突出显示结果。

我想在 PowerPoint 中复制这种效果。

这是我的 Word 代码。

Sub HighlightKeywords()

Dim range As range
Dim i As Long
Dim TargetList

TargetList = Array("keyword", "second", "third", "etc") ' array of terms to search for

For i = 0 To UBound(TargetList) ' for the length of the array

   Set range = ActiveDocument.range

   With range.Find ' find text withing the range "active document"
   .Text = TargetList(i) ' that has the words from the array TargetList
   .Format = True ' with the same format
   .MatchCase = False ' and is case insensitive
   .MatchWholeWord = True ' and is not part of a larger word
   .MatchAllWordForms = False ' and DO NOT search for all permutations of the word

   Do While .Execute(Forward:=True)
   range.HighlightColorIndex = wdYellow ' highlight the keywords from the for loop yellow

   Loop

   End With
Next

End Sub

这是我到目前为止在 PowerPoint 中所拥有的内容,它根本不起作用。

Sub HighlightKeywords()

Dim range As range
Dim i As Long
Dim TargetList

TargetList = Array("keyword", "second", "third", "etc") ' array of terms to search for

For Each sld In Application.ActivePresentation.Slides

For Each shp In sld.Shapes

    If shp.HasTextFrame Then

        Set txtRng = shp.TextFrame.TextRange

For i = 0 To UBound(TargetList) ' for the length of the array

   With range.txtRng ' find text withing the range "shape, text frame, text range"
   .Text = TargetList(i) ' that has the words from the array TargetList
   .Format = True ' with the same format
   .MatchCase = False ' and is case insensitive
   .MatchWholeWord = True ' and is not part of a larger word
   .MatchAllWordForms = False ' and DO NOT search for all permutations of the word

   Do While .Execute(Forward:=True)
   range.HighlightColorIndex = wdYellow ' highlight the keywords from the for loop yellow

   Loop

   End With
Next

End Sub

我最终通过 MSDN 找到了答案,但它与我从人们提交的内容中选择的正确答案非常接近。

这是我使用的代码:

Sub Keywords()

Dim TargetList
Dim element As Variant

TargetList = Array("First", "Second", "Third", "Etc")

For Each element In TargetList
   For Each sld In Application.ActivePresentation.Slides
      For Each shp In sld.Shapes
         If shp.HasTextFrame Then
            Set txtRng = shp.TextFrame.TextRange
            Set foundText = txtRng.Find(FindWhat:=element, MatchCase:=False, WholeWords:=True)
            Do While Not (foundText Is Nothing)
               With foundText
                  .Font.Bold = True
                  .Font.Color.RGB = RGB(255, 0, 0)
               End With
            Loop
         End If
      Next
   Next
Next element

End Sub

事实证明,代码可以工作,但性能却是一场噩梦。我选择作为下面正确答案的代码运行得更加流畅。我已经调整了我的程序以匹配所选的答案。


AFAIK 没有内置的方法强调找到的单词带有颜色。您可以特意创建一个矩形形状并将其放置在找到的文本后面并为其着色,但这完全是一个不同的球类游戏。

下面是一个示例,它将搜索所有幻灯片中的文本,然后将找到的文本设置为粗体、下划线和斜体。如果需要,您还可以更改字体的颜色。

假设我们有一张如下所示的幻灯片

将此代码粘贴到模块中,然后尝试。我已经对代码进行了注释,这样您就不会在理解它时遇到问题。

Option Explicit

Sub HighlightKeywords()
    Dim sld As Slide
    Dim shp As Shape
    Dim txtRng As TextRange, rngFound As TextRange
    Dim i As Long, n As Long
    Dim TargetList

    '~~>  Array of terms to search for
    TargetList = Array("keyword", "second", "third", "etc")

    '~~> Loop through each slide
    For Each sld In Application.ActivePresentation.Slides
        '~~> Loop through each shape
        For Each shp In sld.Shapes
            '~~> Check if it has text
            If shp.HasTextFrame Then
                Set txtRng = shp.TextFrame.TextRange

                For i = 0 To UBound(TargetList)
                    '~~> Find the text
                    Set rngFound = txtRng.Find(TargetList(i))

                    '~~~> If found
                    Do While Not rngFound Is Nothing
                        '~~> Set the marker so that the next find starts from here
                        n = rngFound.Start + 1
                        '~~> Chnage attributes
                        With rngFound.Font
                            .Bold = msoTrue
                            .Underline = msoTrue
                            .Italic = msoTrue
                            '~~> Find Next instance
                            Set rngFound = txtRng.Find(TargetList(i), n)
                        End With
                    Loop
                Next
            End If
        Next
    Next
End Sub

最终截图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MS PowerPoint 中查找并突出显示文本 的相关文章

  • 在 Word 2010 中复制形状而不使用 .Select?

    是否可以在 Word 2010 中复制形状而无需借助 Select 根据开发中心 http msdn microsoft com en us library office ff835500 aspx the Anchor属性返回形状的锚定范
  • 按日期计算 Outlook 中的电子邮件

    我有以下代码来计算 Outlook 文件夹中的电子邮件数量 Sub HowManyEmails Dim objOutlook As Object objnSpace As Object objFolder As Object Dim Ema
  • 在函数上使用子例程的目的

    我已经使用 Access 一段时间了 尽管我了解 Function 相对于 Sub 的明显好处是它可以返回值 但我不确定为什么我应该使用 Sub 而不是一个函数 毕竟 除非我弄错了 函数可以做所有 Subs 可以做的事情吗 注意 我完全知道
  • 当行数 = 0 时删除 Excel 列中的单元格

    我试图删除电子表格中某一列中的所有单元格 0 并 召唤 不在该列顶部的值 我目前正在使用 Dim row index As Integer Dim col index As Integer row index 7 col index 16
  • VBA 代码中的 Excel 公式

    所以 在 Sheet1 中 我有一些名称的基础 它看起来像这样 在 Sheet2 中 我正在使用 Sheet1 中的这些名称 我这样做的方式是在 A 列中输入代码值 在 B 列中输入名称 在 C 列中输入姓氏 看起来像这样 我已经用公式完成
  • MS Access VBA:通过 Outlook 发送电子邮件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何使用 MS Access VBA 通过帐户发送电子邮件 我知道这个问题很模糊 但是很难在网上找到在某种程度上还没有过时的相关信息 编辑
  • 列表框:添加组合框作为项目?

    是否可以将列表框的每个项目都作为组合框 我需要这个 因为我将列表框设置为可检查 然后我需要让用户从列表中每个元素的不同选项中进行选择 Thanks 如果您不打算分发您的应用程序 那么您还可以查看 TreeView 控件 请参阅此示例 COD
  • 将 copyfromrecordset 写入范围

    我有以下 vba 它从单元格 C10 开始读取 MCO 直到其为空 并将从 SQL 数据库获取机器数量 解密和升级机器数量 这工作正常 但我在获取相应行中的数据时遇到问题 目前它总是将数据写入 D10 因为我已经对其进行了硬编码 但我不确定
  • 复制列中的所有单元格[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一张表 有 200 行 行间有一
  • Range.End() 困惑

    我有一个关于 VBA 中 Range End 属性的一般性问题 我已经阅读了有关该房产的信息here http msdn microsoft com en us library bb221181 aspx 但我还是很困惑 例子 With w
  • 由于直接引用范围而不是通过中间变量而导致 Excel VBA 运行时错误 450

    当我尝试直接引用某个范围内的值时 出现运行时错误 450 但如果我使用中间变量 它就会起作用 我不明白为什么 所以我担心在将来的某个时候我会再次遇到错误而不知道为什么 我尝试过使用 With End With 块 但当我直接引用范围时它仍然
  • 将表行从 Word 文档复制到现有文档表特定单元格

    我正在寻找一个宏 它将内容从一个 Word 文档中的表格复制到另一个现有 Word 文档中的表格到特定单元格中 从第 5 行开始 复制后面的所有行并将其粘贴到现有文档中的第 5 行 这可能吗 在此输入图像描述 https i stack i
  • 如何在不滚动的情况下截取整个电子邮件正文?

    我正在使用 OL2010 想要制作整个电子邮件的屏幕截图 不仅仅是 屏幕 可以用VBA或者外部程序来完成吗 有一个类似的问题 https stackoverflow com questions 4176340关于如何使用 C 实现这一点 注
  • 查找并替换目录中所有 Excel 文件工作簿中的字符串

    我正在编写 VBA 代码来替换位于特定目录中的多个 Excel 文件 工作簿 中的特定字符串 我尝试在 Stack Overflow 上搜索 找到答案 但这与通过 Excel 中的宏替换文本文件中的字符串有关 相同的链接是查找并替换文件中的
  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • 如何在字符串vba中包含引号

    我想存储以下文本 Test1 Monday Test Abcdef 全部在字符串中包含引号 我知道要在字符串中包含引号 我必须包含 之前 但在这里这不是一个很好的解决方案 因为我在文本中有太多这样的解决方案 知道如何一次完成这一切吗 您有两
  • VBA根据单元格的值是否为零显示/隐藏行

    我有一个 Excel 工作表 我想根据另一个单元格中的值隐藏或取消隐藏某些行 简而言之 整个事情应该取决于单元格中的值C2 D2 E2 If C2 is blank我想rows 31 to 40被隐藏 如果是的话不为空 他们需要是visib
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname
  • Outlook 无法识别一个或多个姓名

    我有以下 vba 代码 它读取邮箱并向任何发送无效代码作为邮箱回复的用户发送回复 但有时会收到运行时错误 Outlook 无法识别一个或多个名称 我的问题是 创建新的 MAPI 配置文件是否可以解决该问题 或者我是否需要添加一个代码来解析地
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15

随机推荐

  • 运行时无命令输出:'am start -n Error

    当我在 Eclipse 中运行应用程序并单击按钮启动新活动时 我的应用程序强制关闭 并收到此错误 null Error Sat Apr 23 19 53 21 CDT 2011 No command output when running
  • MongoDb 和 Nodejs SSL/安全连接

    我如何通过ssl连接mongoDB和nodejs 我正在使用此代码来创建连接 但它不起作用 var Db require mongodb Db var Server require mongodb Server Db connect mon
  • 在类实例之间共享字典内容

    假设我有一个像这样的字典结构 var stocks new Dictionary
  • Xcode 4.4.1 - C 编程 - 添加新的 .c 文件

    我正在 Xcode 4 4 1 中编写 C 程序 一个新项目从 main c 文件开始 这显然是我的主文件 如果我想编写一个不同的程序怎么办 如果我选择 文件 gt 新建文件 Xcode 将在 main c 旁边创建一个新的 c 文件 问题
  • OpenGL ES 2.0 多个程序或多着色器还是什么?它是如何工作的?

    问题 TL DR 我的问题从根本上来说是我不知道 OpenGL ES 2 0 期望我如何编写和使用多个着色器 或者如果甚至建议 期望一个人会这样做 这里的基本问题是 如果我有一个苹果 一块发光的岩石和一个模糊网格 它们都在同一个 3D 世界
  • ffmpeg:“未找到引用的 QT 章节轨道”

    Using ffmpeg将 QuickTime 中的音频替换为 WAV 中的音频 谁知道我为什么会这样Referenced QT chapter track not found Command ffmpeg i video t 25 i a
  • JavaScript 中的文本搜索?

    我有一个页面 其中包含 200 多个采用这种格式的链接 h1 a href somelink Somelink a some text that explain the meaning of the link h1 现在 为了更容易通过此链
  • 生成人类可区分的随机颜色

    我正在尝试在 JavaScript 中随机生成十六进制颜色 然而 生成的颜色几乎无法区分 有办法改善吗 这是我正在使用的代码 function randomColor var allowed ABCDEF0123456789 S while
  • Heroku-未找到 (Python)

    作为一个初学者 我无法再进一步 我正在尝试在heroku上加载python程序 但不知何故总是只出现以下内容 未找到 在服务器上找不到请求的 URL 如果您手动输入 URL 请检查拼写并重试 My logs 2018 02 12T11 33
  • file_get_contents() 与 CURL 等效吗?

    我正在尝试从这样的 url 获取一些 JSON 数据 url http site com search php term search term here result json decode file get contents url 然
  • postgresql 中第一个和最后一个值聚合函数可以正确处理 NULL 值

    我知道有聚合函数可以获取行的最后一个和第一个值PostgreSQL https wiki postgresql org wiki First last 28aggregate 29 我的问题是 它们不能按我的需要工作 我可以使用 postg
  • 根据另一个单元格范围的值创建对一个单元格范围的注释

    我想为一系列单元格创建注释 注释应包含另一个单元格范围的值 这是我到目前为止所拥有的 Private Sub Worksheet Change ByVal Target As Range Dim sResult As String If U
  • CSS3:背景颜色过渡为透明

    我想做一个过渡div that 以 开始background color rgba 242 245 169 1 三秒后 以 结束background color rgba 242 245 169 0 还有 在两场表演之间background
  • PySpark 在嵌套数组中反转 StringIndexer

    我正在使用 PySpark 使用 ALS 进行协作过滤 我原来的用户和项目 ID 是字符串 所以我使用StringIndexer将它们转换为数字索引 PySpark 的 ALS 模型要求我们这样做 安装模型后 我可以获得每个用户的前 3 个
  • 无法在 Python OpenCV v4.20 中使用 SIFT

    我正在使用 OpenCV v4 20 和 PyCharm IDE 我想使用 SIFT 算法 但我收到这个错误 我在互联网上寻找此错误的解决方案 但没有一个对我有帮助 你知道这个错误的解决办法吗 使用 pip 我可以安装至少 3 4 2 16
  • 一个 dataGridView 中的两个实体

    我有两个关联实体 我通过从对象数据源拖放并手动绑定到列表来创建 dataGridView 一个实体的一切工作都很好 是否有可能通过拖放 手动填充来创建一个具有两个实体 Zamow和ZamSkany 的dataGridView 我可以通过视图
  • 无 IDLE 子进程连接

    我是 python 编程新手 想尝试在 IDLE 而不是 OSX 命令行中编辑脚本 但是 当我尝试启动它时 它给出错误 空闲子进程没有建立连接 空闲子进程无法启动子进程或个人防火墙软件阻止连接 我没有配置防火墙 那么问题可能是什么 您可以尝
  • 在列表视图滚动期间,首先显示错误的图像,然后显示正确的图像

    I am using listview with images in my application But whenever I scroll the list the wrong images are shown first and th
  • 使用 MVVM 模式挂钩 Storyboard.Complete 事件

    基本上 我得到的是一个简单的警报消息设置 有一个单独警报的视图 其中一些数据绑定到虚拟机的文本和颜色 绿色表示成功 红色表示错误等
  • 在 MS PowerPoint 中查找并突出显示文本

    我使用此站点中的一些代码创建了一个宏 用于在 Word 文档上进行关键字搜索并突出显示结果 我想在 PowerPoint 中复制这种效果 这是我的 Word 代码 Sub HighlightKeywords Dim range As ran