ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 413191246se

[分享] 第一章(宏)2018-6-2

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-31 16:03 | 显示全部楼层
不好意思,已经不想用QQ了,有事在论坛里说吧,家里/单位均不安装QQ。另外,我水平低,虽然比你早到论坛几年(2011年7月来论坛的),但水平一直未提高多少,倒也有些进步,不过,仍然很低。
我建议你可以搞一套2013自动排版系统,以方便同样使用2013的朋友们。

TA的精华主题

TA的得分主题

发表于 2018-5-31 16:08 | 显示全部楼层
413191246se 发表于 2018-5-31 16:03
不好意思,已经不想用QQ了,有事在论坛里说吧,家里/单位均不安装QQ。另外,我水平低,虽然比你早到论坛几 ...

目前正在搞,同事已经开始用了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-31 20:16 | 显示全部楼层
本帖最后由 413191246se 于 2018-6-2 13:23 编辑

略。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2018-5-31 20:38 | 显示全部楼层
ming0018 发表于 2018-5-31 16:08
目前正在搞,同事已经开始用了。

期待哪天能用上您的自动排版

TA的精华主题

TA的得分主题

发表于 2018-5-31 20:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,能改成选择区域吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-31 23:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
明晃晃的 13 楼回复,天空 竟然没看???

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-31 23:42 | 显示全部楼层
413191246se 发表于 2018-5-31 23:16
明晃晃的 13 楼回复,天空 竟然没看???

天啊,真不懂我看哪里去了,一晚上我刷新了很多次这帖子竟然没看到您的回复,哎,不好意思!

谢谢抽空为我解答,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-1 10:26 | 显示全部楼层
本帖最后由 413191246se 于 2018-6-1 10:27 编辑

    SORRY,天空!——我发完帖子也想了,是不是同一时间你没看到?另外,帖子发完,管理员要审核的,一般不会立即审核,所以,就耽误时间了,也是我着急了,误会解除。
    天空,你试试吧,我没测试大文本,只是能处理选定范围内的《第一章》(条)了。(如果选定范围内包括表格,结果不一定正确。)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-1 23:52 | 显示全部楼层
ming0018:今日我复制了一个50页的大文本demo,查找《第一条》,测试结果如下:
第一章Select=45.53'  第一章Range=58.54'
可以看出,Selection/Select 方法比 Range 方法快了 13 秒,和你的结果正好相反。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 13:24 | 显示全部楼层
  1. Sub 第一章_选定区域()
  2.     Dim i&, j$, k$, m$, n&, r As Range, s As Range, x&
  3.     k = MsgBox("<是>:第一章    <否>:第一条    <取消>:自定义", 3 + 48)
  4.     If k = vbYes Then
  5.         j = "章"
  6.     ElseIf k = vbNo Then
  7.         j = "条"
  8.     Else
  9.         j = InputBox("请输入量词!" & vbCr & "(比如:第一节的<节>,第一部分的<部分>)", "第一章/第一条", "节")
  10.         If j = "" Then End
  11.     End If

  12.     m = MsgBox("<是>:第一" & j & "    <否>:第1" & j & "    <取消>:放弃", 3 + 48, "请选择编号类型!")
  13.     If m = vbYes Then
  14.         n = 2
  15.     ElseIf m = vbNo Then
  16.         n = 1
  17.     Else
  18.         End
  19.     End If

  20.     With Selection
  21.         If .Type = wdSelectionIP Then .WholeStory
  22.         Set r = .Range
  23.         Set s = .Range
  24.     End With

  25.     r.MoveStart 1, -1

  26.     With r.Find
  27.         .ClearFormatting
  28.         .Replacement.Text = ""
  29.         Do While .Execute("^13第[一二三四五六七八九十0-90-9百零〇○Oo千]{1,}" & j, , , 1, , , 1)
  30.             x = 1
  31.             With .Parent
  32.                 If Not .Information(12) Then
  33.                     .MoveStart 1, 1
  34.                     .Expand 4
  35.                     With .Find
  36.                         .Execute " ", , , 0, , , , , , "", 2
  37.                         .Execute " ", , , 0, , , , , , "", 2
  38.                         .Execute "^t", , , 0, , , , , , "", 2
  39.                     End With
  40.                     .Characters(InStr(.Text, j) + Len(j) - 1).InsertAfter Text:=Chr(-24159)
  41.                     If j = "条" Then
  42.                         If .Text Like "*[!。:;,、!?…—.:;,!?]?" Then .Characters.Last.InsertBefore Text:="。"
  43.                         .MoveEnd 1, -(Len(.Text) - InStr(.Text, j))
  44.                         With .Font
  45.                             .NameFarEast = "黑体"
  46.                             .NameAscii = "Times New Roman"
  47.                             .Bold = True
  48.                         End With
  49.                     Else
  50.                         .Style = wdStyleSubtitle
  51.                         If Len(j) > 1 Then .Font.Size = 18
  52.                         .Font.NameFarEast = "黑体"
  53.                         With .ParagraphFormat
  54.                             .SpaceBefore = 24
  55.                             .SpaceAfter = 24
  56.                         End With
  57.                         If .Text Like "*[。:;,、!?…—.:;,!?]?" Then .Characters.Last.Previous.Delete
  58.                         If .Text Like "* ???" Then .Characters.Last.Previous.InsertBefore Text:=Chr(-24159)
  59.                         .MoveEnd 1, -(Len(.Text) - (InStr(.Text, j) + Len(j) - 1))
  60.                     End If
  61.                     .MoveStart 1, 1
  62.                     .MoveEnd 1, -Len(j)
  63.                     i = i + 1
  64.                     .Text = i
  65.                     If n = 2 Then
  66.                         .Delete
  67.                         .Fields.Add Range:=r, Text:="= " & i & " \* CHINESENUM3"
  68.                         .Paragraphs(1).Range.Fields.Unlink
  69.                     End If
  70.                     .Expand 4
  71.                     r.SetRange Start:=r.End - 1, End:=s.End
  72.                 Else
  73.                     .Tables(1).Range.Next.Select
  74.                     With Selection
  75.                         If .End > s.End Then End
  76.                         If Asc(.Text) <> 13 Then .InsertParagraphBefore
  77.                         .Characters(1).Font.Size = 4
  78.                         r.SetRange Start:=.Start, End:=s.End
  79.                     End With
  80.                 End If
  81.             End With
  82.         Loop
  83.     End With
  84.     If x = 0 Then MsgBox "选定区域未找到<第一" & j & ">!!!", 0 + 16
  85. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-2 16:36 , Processed in 0.045240 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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