ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何用代码把红线句子提取到文末并随机排列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-1-23 20:45 | 显示全部楼层 |阅读模式
本帖最后由 zzpsx 于 2021-1-23 20:51 编辑

如何用代码把红线句子提取到文末并随机排列 如何把红线句子提取到文末并随机排列.rar (23.77 KB, 下载次数: 10)

TA的精华主题

TA的得分主题

发表于 2021-1-24 03:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
* 楼主,请将附件示例文档中的“想得到的效果如下”及以后的文字删除,保存后;
* 选定要处理的文字范围,应用下面的宏:
  1. Sub aaaa下划线_提取句子到文末_随机排列()
  2.     Dim r As Range, s As Range, n&, t$
  3.     With Selection
  4.         If .Type = 1 Then MsgBox "Not-Select!", 0 + 16: End
  5.         If .Text Like "*" & vbCr & vbCr Then .Characters.Last.Delete
  6.         If .Paragraphs.Last.Range.End < ActiveDocument.Content.End Then
  7.             If .Next.Text = vbCr Then .Next.Delete
  8.         End If
  9.         With Selection
  10.             Set r = .Range
  11.             Set s = .Range
  12.         End With
  13.         With r.Find
  14.             .ClearFormatting
  15.             .Text = ""
  16.             .Font.Underline = wdUnderlineSingle
  17.             .Forward = True
  18.             .MatchWildcards = True
  19.             Do While .Execute
  20.                 With .Parent
  21.                     n = n + 1
  22.                     t = t & "/" & .Text
  23.                     .Text = Space(3) & n & Space(3)
  24.                     .SetRange Start:=.End, End:=s.End
  25.                 End With
  26.             Loop
  27.         End With
  28.     End With
  29.    
  30.     With ActiveDocument.Content
  31.         .InsertAfter Text:=vbCr & vbCr & t
  32.         .Paragraphs.Last.Range.Select
  33.     End With
  34.     With Selection
  35.         .Find.Execute "/", , , 0, , , , , , "^p", 2
  36.         .MoveStart
  37.         .ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=1, AutoFitBehavior:=wdAutoFitFixed
  38.         .Tables(1).Style = "网格型"
  39.         .InsertColumnsRight
  40.         .Tables(1).Select
  41.         .Tables(1).AutoFitBehavior (wdAutoFitWindow)
  42.         .Tables(1).Columns(2).Select
  43.         Dim c As Cell
  44.         For Each c In .Cells
  45.             c.Range.Text = Rnd()
  46.         Next
  47.         .Tables(1).Select
  48.         .Sort ExcludeHeader:=False, FieldNumber:="列 2", SortFieldType:= _
  49.         wdSortFieldNumeric, SortOrder:=wdSortOrderAscending, FieldNumber2:="", _
  50.         SortFieldType2:=wdSortFieldSyllable, SortOrder2:=wdSortOrderAscending, _
  51.         FieldNumber3:="", SortFieldType3:=wdSortFieldSyllable, SortOrder3:= _
  52.         wdSortOrderAscending, Separator:=wdSortSeparateByCommas, SortColumn:= _
  53.         False, CaseSensitive:=False, LanguageID:=wdSimplifiedChinese, _
  54.         SubFieldNumber:="段落数", SubFieldNumber2:="段落数", SubFieldNumber3:="段落数"
  55.         .Tables(1).Columns(2).Delete
  56.         .Tables(1).Select
  57.         .Rows.ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=False
  58.     End With
  59.     With Selection
  60.         .Previous(4, 1).Delete
  61.         .Next(4, 1).Delete
  62.     End With
  63. '    Stop
  64.     With ListGalleries(wdNumberGallery).ListTemplates(1).ListLevels(1)
  65.         .NumberFormat = "%1."
  66.         .TrailingCharacter = wdTrailingTab
  67.         .NumberStyle = wdListNumberStyleUppercaseLetter
  68.         .NumberPosition = CentimetersToPoints(0)
  69.         .Alignment = wdListLevelAlignLeft
  70.         .TextPosition = CentimetersToPoints(0.74)
  71.         .TabPosition = wdUndefined
  72.         .ResetOnHigher = 0
  73.         .StartAt = 1
  74.         .LinkedStyle = ""
  75.     End With
  76.     ListGalleries(wdNumberGallery).ListTemplates(1).Name = ""
  77.     Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
  78.         ListGalleries(wdNumberGallery).ListTemplates(1), ContinuePreviousList:= _
  79.         False, ApplyTo:=wdListApplyToSelection, DefaultListBehavior:= _
  80.         wdWord10ListBehavior
  81. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-26 21:48 | 显示全部楼层
  1. Public Sub test()
  2.     Dim i%, j%, d, arr(), brr()
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     Application.ScreenUpdating = False
  5.     Selection.HomeKey Unit:=wdStory '光标移到文档开始
  6.     With Selection.Find
  7.         .ClearFormatting
  8.         .Font.ColorIndex = wdRed '查找红色字体
  9.         .Forward = True
  10.         Do While .Execute
  11.             i = i + 1 '用来记录查找到的个数
  12.             ReDim Preserve arr(1 To i)
  13.             arr(i) = .Parent
  14.             .Parent.Text = Space(3) & i & Space(3) '替换查找到的内容
  15.         Loop
  16.     End With
  17.     ReDim brr(1 To UBound(arr))
  18.     For i = 1 To UBound(brr) '随机生成1-UBound(brr)的整数
  19. Loo:   j = Int(VBA.Rnd() * (UBound(brr) - 1 + 1) + 1)
  20.         If Not d.Exists(j) Then
  21.             d(p) = ""
  22.             brr(i) = j
  23.         Else
  24.             GoTo Loo:
  25.         End If
  26.     Next
  27.     For i = 1 To UBound(brr)
  28.         ActiveDocument.Range.InsertParagraphAfter '在文档后插入一行
  29.         Selection.EndKey Unit:=wdStory '光标移到文档尾
  30.         ActiveDocument.Paragraphs(ActiveDocument.Paragraphs.Count).Range = Chr(64 + i) & "." & Space(2) & arr(brr(i)) '在最后一段输出内容
  31.     Next
  32.     Application.ScreenUpdating = True
  33.     MsgBox "处理完成!", "64", "温馨提示"
  34. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-26 21:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件供参考:


如何把红线句子提取到文末并随机排列.rar (38.34 KB, 下载次数: 11)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-2-11 23:01 来自手机 | 显示全部楼层
shenjianrong163 发表于 2021-1-26 21:58
附件供参考:

优秀,向您学习

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-24 00:46 , Processed in 0.043199 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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