ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2692|回复: 11

[求助] word 选中带有关键词的段落

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-2 18:51 | 显示全部楼层 |阅读模式
关键词是  【????】
问号是不同的年份数字

如何选中带有上面关键词的段落

求大佬帮忙!以下是我自己录制的宏

在关键词后加   *^13  可以选定关键词到关键词段落末的文本
但是在关键词之前加上  ^13*  就选中了好几段
是什么问题啊?


  1. Sub 录制宏_选中关键词段落()
  2. With Selection.Find
  3. .Text = "【????】*^13"
  4. .Replacement.Text = ""
  5. .Forward = True
  6. .Wrap = wdFindContinue
  7. .Format = False
  8. .MatchCase = False
  9. .MatchWholeWord = False
  10. .MatchByte = False
  11. .MatchAllWordForms = False
  12. .MatchSoundsLike = False
  13. .MatchWildcards = True
  14. End With
  15. Selection.Find.Execute
  16. End Sub
复制代码
  1. Sub 自己之前弄的()
  2.     With ActiveDocument.Content.Find
  3.         .Replacement.Font.Name = "黑体"
  4.         .Replacement.Font.Size = 16
  5.         .Execute "【????】*^13", , , 1, , , , , , , 2
  6. End With
  7. End Sub
复制代码
最后要将带关键词的选中文本设置字体,颜色

选中带关键字的文本.rar (16.47 KB, 下载次数: 32)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-5 00:25 | 显示全部楼层
关于这个问题我有了新的想法:

查找关键词
返回关键词所在的段落
改变段落格式

不知道有没有大佬可以告诉我能不能实现这个想法
  1. Sub 关键词所在段落数()
  2. Dim P As Paragraph
  3. For Each P In ActiveDocument.Paragraphs
  4. n = n + 1
  5. If InStr(1, P.Range, "关键词") > 0 Then
  6. MsgBox n
  7. End If
  8. Next
  9. End Sub
复制代码
这个代码可以查询固定关键词
没办法查询带有通配符的

现在想法是查询关键词
输出关键词段落数到数组
循环数组改变格式

  1. <div>Sub <span style='display: inline !important; float: none; background-color: rgb(247, 247, 247); color: rgb(68, 68, 68); font-family: Tahoma,"Microsoft Yahei","Simsun"; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;'>关键词所在段落数_格式</span>()
  2. </div>Dim P As Paragraph
  3. For Each P In ActiveDocument.Paragraphs
  4. n = n + 1
  5. If InStr(1, P.Range, "关键词") > 0 Then
  6. MsgBox n

  7.   With ActiveDocument.Paragraphs(n).Range
  8.    
  9.         .Font.Name = "宋体"                      '字体
  10.         .Font.Bold = True                        '加粗
  11.         .Font.Size = 22                          '字号
  12.         .ParagraphFormat.Alignment = 1           '居中对齐
  13.     End With
  14.     End If
  15. Next
  16. End Sub
复制代码

现在基本达成我要的效果了
就是关键词是通配符要怎么处理啊?
哪位老师可以帮帮忙啊


TA的精华主题

TA的得分主题

发表于 2020-2-5 15:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 相见是缘8 于 2020-2-5 15:29 编辑

Sub 自()
    With ActiveDocument.Content.Find
        .Replacement.Font.Name = "黑体"
        .Replacement.Font.Size = 16
        .Replacement.Font.Color = RGB(255, 0, 0)
        .Execute "(([一二三四五六七八九十]{1,}))*(【[0-9]{4}】)*^13", , , 1, , , , , , "", 2
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2020-2-5 17:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
设置一下MatchWildcards=True

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-8 10:46 | 显示全部楼层
基本达成

关键词还是没办法查找 通配符   
  1. Sub 选中带关键词的段落并设置格式()
  2. Application.ScreenUpdating = False   '禁止刷新
  3. Dim P As Paragraph
  4. gjc = InputBox("输入关键词", "提示", "关键词")
  5. MatchWildcards = True
  6. For Each P In ActiveDocument.Paragraphs
  7. n = n + 1

  8. If InStr(1, P.Range, gjc) > 0 Then
  9. MsgBox "关键词出现在:第" & n & "段"

  10.     With ActiveDocument.Paragraphs(n).Range
  11.         .Font.Name = "仿宋"                      '字体
  12.         .Font.Size = 16                          '字号
  13.         .Font.Bold = False                        '是否加粗
  14.       End With
  15.       End If
  16. Next
  17. End Sub
复制代码



TA的精华主题

TA的得分主题

发表于 2020-2-8 15:37 | 显示全部楼层
asdfghjklzz 发表于 2020-2-8 10:46
基本达成

关键词还是没办法查找 通配符

Sub test()
    Dim mydoc As Document, p As Range, s
    If Selection.Type = wdSelectionIP Then
        MsgBox "没选择关键字!": Exit Sub
    Else
        s = Selection.Text
    End If
    Set mydoc = Documents.Add
    With ThisDocument.Content.Find
        .ClearFormatting
        .Text = s
        Do While .Execute
              .Parent.Select
            Set p = .Parent.Paragraphs(1).Range.FormattedText
            p.Select
            With mydoc.Range
                .Collapse wdCollapseEnd
                .FormattedText = p
            End With
            .Parent.Move 4
        Loop
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-2-10 07:26 来自手机 | 显示全部楼层
QQ214189912  2020-2-8 15:37
Sub test()
    Dim mydoc As Document, p As Range, s
    If Selection.Type = wdSelectionIP Then

TA的精华主题

TA的得分主题

发表于 2020-2-20 18:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-8-3 17:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好多年没进来了,这里是提供思路的好地方

TA的精华主题

TA的得分主题

发表于 2022-8-28 22:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
勾选通配符,查找^13[!^13]@【[0-9]{4}】*^13
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 21:02 , Processed in 0.034636 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表