Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 939|回复: 1

求助vba如何让每一个含【解析】关键词的段落前缀它相对前一个段落的段首数字字符

[复制链接]
发表于 2022-12-9 14:01 | 显示全部楼层 |阅读模式
求助vba如何让每一个含【解析】关键词的段落前缀它相对前一个段落的段首数字字符

求助vba如何让每一个含【解析】关键词的段落前缀它相对前一个段落的段首数字字符

求助vba如何让每一个含【解析】关键词的段落前缀它相对前一个段落的段首数字字符

求助vba如何让每一个含【解析】关键词的段落前缀它相对前一个段落的段首数字字符.rar

230.29 KB, 下载次数: 0

求助vba如何让每一个含【解析】关键词的段落前缀它相对前一个段落的段首数字字符

 楼主| 发表于 2022-12-11 15:53 | 显示全部楼层
问chatgpt3硬是把答案问出来了
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^13█([0-9])([0-9])([0-9]).【解析】"
        .Replacement.Text = "^13【解析】"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll


    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^13█([0-9])([0-9]).【解析】"
        .Replacement.Text = "^13【解析】"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll


    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^13█([0-9]).【解析】"
        .Replacement.Text = "^13【解析】"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll




    Dim 定位词 As String
    定位词 = "【解析】"
    Dim 题号词 As String
    题号词 = "█([0-9]{1,})."
    Dim 本段 As Paragraph
    For Each 本段 In ActiveDocument.Paragraphs       '''''1遍历活动文档所有段落
        If InStr(1, 本段.range.Text, 定位词) > 0 Then         ''''2如果本段搜到定位词【解析】
            If InStr(1, 本段.Previous.range.Text, 题号) > 0 Then        ''''3如果本段的前1段搜到题号词【█111.】
                本段.Previous.range.Select                      '''''''''4选择本段前一段
                With Selection.Find                      '''''''''5搜索题号词
                    .Text = 题号词
                    .Forward = True
                    .Wrap = wdFindStop
                    .Format = False
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = True
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    If .Execute Then                  '''''''''6如果存在题号词
                        Selection.Copy                '''''7复制题号词
                        本段.range.Select             '''''8选择本段落
                        Selection.Move wdParagraph, -1     '''''9光标移动到段前
                        Selection.Paste      ''''''10粘贴刚才的复制
                    End If
                End With
            End If
        End If
    Next 本段  ' ' ' ' '11遍历下一个含词段落



    ''''光标移动到最后的回车后
    Selection.EndKey Unit:=wdStory
    Do
        Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Loop Until Selection.Characters(1) <> Chr(13)
    Selection.MoveRight Unit:=wdCharacter, Count:=1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 18:06 , Processed in 0.249520 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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