ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何通过代码将含有绿色字体文本所在的段落提取出来?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-25 15:46 | 显示全部楼层 |阅读模式
本帖最后由 tangqingfu 于 2019-5-25 15:59 编辑

请教如何通过代码将所有含有绿色字体文本所在的段落提取到新文档中?
问题.png

双音节与多音节测试.rar

5.83 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2019-5-25 23:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub test提取绿色段落到新建文档()
  2.     Dim s$
  3.     With ActiveDocument.Content.Find
  4.         .ClearFormatting
  5.         .Text = ""
  6.         .Font.Color = wdColorGreen
  7.         .Forward = True
  8.         .MatchWildcards = True
  9.         Do While .Execute
  10.             s = s & .Parent.Paragraphs(1).Range.Text
  11.         Loop
  12.     End With
  13.     Documents.Add.Content = s
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-5-26 00:23 | 显示全部楼层
唐兄:楼上代码作废!因为如果每个段落含有一个绿色字符,那么楼上代码是正确的!但是,如果某个段落含有两个或以上绿色字符时,请应用下面的宏:
  1. Sub test提取绿色段落到新建文档()
  2.     Dim r As Range, a As Range, s$
  3.     Set r = ActiveDocument.Content
  4.     Set a = ActiveDocument.Content
  5.     With r.Find
  6.         .ClearFormatting
  7.         .Text = ""
  8.         .Font.Color = wdColorGreen
  9.         .Forward = True
  10.         .MatchWildcards = True
  11.         Do While .Execute
  12.             With .Parent
  13.                 s = s & .Paragraphs(1).Range.Text
  14.                 If r.Paragraphs(1).Range.End = a.End Then Exit Do
  15.                 r.SetRange Start:=r.Next(4, 1).Start, End:=a.End
  16.             End With
  17.         Loop
  18.     End With
  19.     Documents.Add.Content = s
  20. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-26 08:08 | 显示全部楼层
本帖最后由 相见是缘8 于 2019-5-26 08:31 编辑

期待……!

TA的精华主题

TA的得分主题

发表于 2019-5-26 13:31 | 显示全部楼层

用你的代码改一下:
Sub test提取绿色段落到新建文档()
    Dim s$, mydoc, ph
    Set mydoc = Documents.Add
    For Each ph In ThisDocument.Paragraphs
        With ph.Range.Find
            .ClearFormatting
            .Text = ""
            .Font.Color = wdColorGreen
            .Forward = True
            .MatchWildcards = True
            If .Execute Then
                .Parent.Paragraphs(1).Range.Copy
                Selection.EndKey Unit:=wdStory
                Selection.Paste
            End If
        End With
    Next ph
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-26 14:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
小花鹿 发表于 2019-5-26 13:31
用你的代码改一下:
Sub test提取绿色段落到新建文档()
    Dim s$, mydoc, ph

老师的代码,好像提取不了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-26 15:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-5-26 16:24 | 显示全部楼层
本帖最后由 duquancai 于 2019-5-26 21:18 编辑
tangqingfu 发表于 2019-5-26 15:24
代码测试通过,可以提取。

周末,我也来凑个热闹!!!屏蔽掉内容重复的段落。
  1. Sub main()
  2.     Dim flag As Boolean
  3.     With ActiveDocument.Content.Find
  4.         .Font.Color = wdColorGreen
  5.         Do While .Execute
  6.             If Not flag Then
  7.                 Dim doc As Document, d As Object, p As Range
  8.                 Set doc = Documents.Add
  9.                 Set d = CreateObject("Scripting.Dictionary")
  10.                 Set p = .Parent.Paragraphs(1).Range
  11.                 doc.Content.FormattedText = p.FormattedText
  12.                 d(p.Text) = 0: .Parent.Move 4: flag = True
  13.             Else
  14.                 Set p = .Parent.Paragraphs(1).Range
  15.                 If Not d.Exists(p.Text) Then
  16.                     doc.Bookmarks("\EndOfDoc").Range.FormattedText = p.FormattedText
  17.                 End If
  18.                 d(p.Text) = 0: .Parent.Move 4
  19.             End If
  20.         Loop
  21.     End With
  22. End Sub
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-26 17:09 | 显示全部楼层
tangqingfu 发表于 2019-5-26 15:24
代码测试通过,可以提取。

如果提取的段落到新文档中不得有重复段落出现,那么需要do循环中增加一个字典进行判断!!!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-26 17:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
相见是缘8 发表于 2019-5-26 14:18
老师的代码,好像提取不了!

大家玩玩,讨论一下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 12:00 , Processed in 0.043965 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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