在 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 中查找并突出显示文本 的相关文章

  • 升级到 Office 365 专业增强版后 Excel VBA 运行速度极慢

    我粘贴部分代码如下 这段代码是解析从HTTP请求得到的JSON字符串 根本没有工作表 工作簿操作 在office升级到office365专业增强版之前 效率还是蛮高的 但升级后 解析一个不到2秒的json 却要花费几分钟 我个人不明白根本原
  • 运行时错误“1004”:工作表类的粘贴方法失败错误

    使用 VBA 将 1 行文本从 Word 复制粘贴到 Excel 当代码到达下面的行时 我收到以下错误 ActiveSheet Paste 运行时错误 1004 工作表类的粘贴方法失败错误 But 如果我单击 调试 按钮并按 F8 则会粘贴
  • 在vba中打乱数组[重复]

    这个问题在这里已经有答案了 我需要对数组中的值进行无重复的洗牌 我需要在代码中添加什么以避免重复 Function Resample data vector n UBound data vector ReDim shuffled vecto
  • 将文档属性字段添加到页脚会删除现有的页码

    我想在文档中每个页面的页脚中标记一个文档变量字段 我已经弄清楚如何添加该字段 但是 这样做时 页脚中已存在的页码字段将被禁用 仅保留文本并且不再充当动态页码 这是我的代码 它添加了该字段 但以某种方式禁用了页码 sectionFooter
  • 在 Access 表单上将控件分组在一起

    我有一个 Access2003 表单 我想将多个控件组合在一起并通过 VBA 代码以编程方式更改可见性 这可能吗 我确实知道我可以通过 格式 gt 组 对项目进行分组 但如果这样做 如何在代码中引用整个组 谢谢 您可以将所有控件放置在组框控
  • Windows 更新后 Excel 2010 ActiveX 控件不再工作 [重复]

    这个问题在这里已经有答案了 因此 在工作中 我在安装了最新的 Windows 7 更新 包括 Microsoft Office 2010 更新 后遇到了这个问题 更新的日期是今天 2014 年 12 月 12 日 更新后 我在 Excel
  • Excel VBA 更改命令按钮的颜色

    我在更改颜色时遇到问题CommandButton 在电子表格中 我添加设计按钮作为表单或 ActiveX 然后在 VBA 中我尝试 Activesheet shapes CommandButton1 visible false 这个效果很好
  • VBA 使用 Like 运算符删除行

    简单的事情并不简单 我试图根据具有以 2L 开头的数据的特定列删除行 所以我写了这段代码 LastRow可以理解 Sub Cleanup For i 1 To LastRow If Range F i Like 2L Then Rows i
  • 使用 If 语句执行 Do Until 直到达到特定值

    我正在处理一份大数据表 我需要代码从特定单元格中减去 直到该值大于某个数字 如果这个数字没有达到 我希望它变成0 例如如果A3 A2 gt Q5 then E3 A3 A2 if lt Q5 do A3 A1 如果这不起作用E2 0 我需要
  • 使用 Excel-VBA(MSXML2.XMLHTTP 对象)更新 SharePoint 列表

    基本信息 我需要从 Excel 更新 添加 编辑 SharePoint 列表 我能够做到这一点ListObject 但这不是我们要走向的方向 在阅读了所有谷歌可能性后 我想出了 也许我错了 使用的想法MSXML2 XMLHTTP对象来更新
  • 将图表导出为图像有时会生成空文件

    I m doing a macro that exports all the charts in the sheet and then opens Outlook and attaches them However I ve noticed
  • 根据当前工作簿中的匹配值编辑主工作簿中的单元格

    这里的目标是比较两个工作簿之间 A 列中的值 当前工作簿是 xlsm 目标工作簿是 xlsx 如果找到任何匹配项 匹配值同一行的 E 列中的值在目标工作簿中发生更改 在这种情况下 必须将工作簿分开 我决定通过选择当前工作簿 A2 中的第一个
  • 用户窗体上的类对象 TextBox 可用方法

    我注意到 当我为文本框创建类模块并在表单上使用它时 通过在表单 init 事件中通过 VBA 添加 Enter 或 Exit 方法都不可用 当然 如果我只是在表单中添加一个文本框 我可以让 DblClick 方法正常工作 因此我的类设置正确
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • 在 Excel 表格中选择多列的代码

    我是 Excel VBA 新手 我需要修改我的代码 以便我能够进一步进行 我想在 Excel 表格中选择多个表格列 这是我的代码 Dim ws As Worksheet Dim tbl As ListObject Set ws Sheets
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • 在VBA中初始化全局变量

    在 Excel 2003 中 如何声明全局变量并仅在打开工作簿时初始化它们一次 我有一些由几个宏使用的参数 基本上是输入文件的路径 目前 我的代码如下所示 global path1 path2 as string sub initPaths
  • 获取当前 VBA 函数的名称

    对于错误处理代码 我想获取发生错误的当前 VBA 函数 或子函数 的名称 有谁知道如何做到这一点 编辑 谢谢大家 我曾希望存在一个未记录的技巧来自行确定函数 但这显然不存在 我想我会保留当前的代码 Option Compare Databa
  • 如何使用 VBA 添加 MS Outlook 提醒事件处理程序

    我想扩展 MS Outlook 以便当弹出日历提醒时 我可以运行一个可以运行外部程序 如批处理脚本 的 VBA 挂钩 就我而言 我想将提醒 转发 到 Linux 桌面 因为我在这两种环境中工作 并且 Windows 桌面并不总是可见 我看到
  • 使用 split 函数到数组中会导致编译错误:无法分配给数组

    我正在尝试使用split 函数根据给定名称字符串中的空格拆分名称 当尝试编译我在下面编写的代码时 出现编译错误 无法分配给数组 我几乎从这里复制了微软的示例 https support microsoft com en us kb 2662

随机推荐

  • 运行时无命令输出:'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