ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 急急急,如何实现这样的批量替换???

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-22 16:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 xzb1972 于 2016-3-22 16:07 编辑

谢谢,但是没有解决问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-22 16:08 | 显示全部楼层
413191246se 发表于 2012-4-6 11:21
似乎达到了目的,楼主不妨用用看!大部分是用 VBA 宏代码,略微用查找与替换。
附件:

谢谢,怎么文件里没有VBA代码呀?

TA的精华主题

TA的得分主题

发表于 2016-3-22 16:12 | 显示全部楼层
楼主,这是4年前的帖子,另外,原来的文件已经做好了,不需要代码。——你还需要代码吗?

TA的精华主题

TA的得分主题

发表于 2016-3-22 16:14 | 显示全部楼层
  1. Sub 第一章()
  2.     Dim i As Paragraph, j As String, k As Long, s As Long
  3.     j = InputBox("请输入[章/条/节/课/题/部分/自然段]等量词!", "第一章/第1章/条/节/课/题/部分/自然段", "章")
  4.     If j = "" Then Exit Sub
  5.     If MsgBox("是:<居中/副标题>格式    否:<普通加粗>格式", vbYesNo + vbExclamation, "请选择设置[第一" & j & "]的格式!") = vbYes Then k = 1 Else k = 2
  6.     For Each i In ActiveDocument.Paragraphs
  7.         If i.Range Like "第[一二三四五六七八九十]" & j & "*" Or i.Range Like "第[一二三四五六七八九十][一二三四五六七八九十百]" & j & "*" Or i.Range Like "第[二三四五六七八九]十[一二三四五六七八九]" & j & "*" Or i.Range Like "第[一二三四五六七八九]百[一二三四五六七八九零][一二三四五六七八九十]" & j & "*" Or i.Range Like "第[一二三四五六七八九]百[一二三四五六七八九]十[一二三四五六七八九]" & j & "*" Or i.Range Like "第#" & j & "*" Or i.Range Like "第##" & j & "*" Or i.Range Like "第###" & j & "*" Or i.Range Like "第####" & j & "*" Then
  8.             i.Range.Find.Execute FindText:=" ", replacewith:="", Replace:=wdReplaceAll
  9.             i.Range.Find.Execute FindText:="^w", replacewith:="", Replace:=wdReplaceAll
  10.             s = InStr(i.Range, j)
  11.             If Len(j) = 1 Then
  12.                 i.Range.Characters(s).InsertAfter Text:=" "
  13.             Else
  14.                 i.Range.Characters(s + Len(j) - 1).InsertAfter Text:=" "
  15.             End If
  16.             If k = 1 Then
  17.                 If Len(j) = 1 Then
  18.                     If Len(i.Range) - s - 2 = 2 Then i.Range.Characters(s + 2).InsertAfter Text:=" "
  19.                 Else
  20.                     If Len(i.Range) - s - Len(j) - 1 = 2 Then i.Range.Characters(s + Len(j) + 1).InsertAfter Text:=" "
  21.                 End If
  22.                 With i.Range
  23.                     .Style = wdStyleSubtitle
  24.                     With .Font
  25.                         .Name = "黑体"
  26.                         .Name = "Arial"
  27.                         .Color = wdColorRed '红色
  28.                     End With
  29.                     With .ParagraphFormat
  30.                         .SpaceBefore = 24
  31.                         .SpaceAfter = 18
  32.                         .AutoAdjustRightIndent = False
  33.                         .DisableLineHeightGrid = True
  34.                     End With
  35.                 End With
  36.             Else
  37.                 If Len(j) <> 1 Then s = s + Len(j) - 1
  38.                 With ActiveDocument.Range(Start:=i.Range.Start, End:=i.Range.Characters(s).End).Font
  39.                     .Name = "黑体"
  40.                     .Name = "Times New Roman"
  41.                     .Bold = True
  42.                     .Color = wdColorBlue '蓝色
  43.                 End With
  44.             End If
  45.         End If
  46.     Next
  47.     MsgBox "处理完毕!", vbOKOnly + vbExclamation, "第一章/第1章/条/节/课/题/部分/自然段"
  48. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-22 16:14 | 显示全部楼层
413191246se 发表于 2016-3-22 16:12
楼主,这是4年前的帖子,另外,原来的文件已经做好了,不需要代码。——你还需要代码吗?

是的,需要代码,因为有好多这样的文档需要转换呢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-22 16:17 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-22 16:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-3-22 18:40 | 显示全部楼层
很奇怪,帖子明明说的是要替换汉字“第一条”为数字的“第1条”,且设为“黑体”和“加粗”,何以楼主说前面楼层的代码“太好了”,莫名其妙。

上个图,“到此一游”,留个念,帮顶:

iooioi.gif

TA的精华主题

TA的得分主题

发表于 2016-3-23 15:10 | 显示全部楼层

师傅好!
运行该宏后,好像并未把第一条”、“第二条”……,替换为“第1条 ”、“第2条 ”……
还是原来的第一条”、“第二条”……,只是把它们加粗和变色了。
如要替换为“第1条 ”、“第2条 ”……代码该如何修正?

TA的精华主题

TA的得分主题

发表于 2016-3-24 11:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2. '第一条转第1条
  3. 'Sub 删除所有空格()
  4.     Dim myRange As Range
  5.     If Selection.Type = wdSelectionIP Then Selection.WholeStory
  6.     Set myRange = Selection.Range
  7.     myRange.Find.Execute FindText:=" ", replacewith:="", Replace:=wdReplaceAll    '删除所有全角空格
  8.     myRange.Find.Execute FindText:="^w", replacewith:="", Replace:=wdReplaceAll    '删除所有空白区域

  9.     '选定字符间循环--选定字符字长=v,循环次数=i
  10.     Dim v As Long, i As Long
  11.     Selection.HomeKey Unit:=wdStory
  12.     Selection.Find.ClearFormatting
  13.     Do While Selection.Find.Execute(FindText:="第", Forward:=True)
  14.         Do
  15.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  16.         Loop Until Selection Like "*[!一二三四五六七八九十百零]"
  17.         
  18.         If Selection Like "*条" Then
  19.             Selection.MoveStart Unit:=wdCharacter, Count:=1
  20.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  21.             Selection.Font.Color = wdColorRed
  22.             
  23.             '十一到十九
  24.             If Selection Like "十[一二三四五六七八九]" Then
  25.                 Selection.Characters(1) = "1"
  26.                 Selection.MoveRight Unit:=wdCharacter, Count:=1
  27.                 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
  28.                 GoTo Sec
  29.             
  30.             '二十到九十,一百到九百
  31.             ElseIf Selection Like "[一二三四五六七八九][十百]" Then
  32.                 If Selection Like "*十" Then Selection.Characters(2) = "0" Else Selection.Characters(2) = "00"
  33.                 Selection.MoveLeft Unit:=wdCharacter, Count:=1
  34.                 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
  35.                 GoTo Sec
  36.                
  37.             '第一百二十条
  38.             ElseIf Selection Like "???十" Then
  39.                 Selection.Characters.Last = "0"
  40.             End If
  41.             
  42.             Selection = Replace(Selection, "百", "")
  43.             If Len(Selection) >= 3 Then Selection = Replace(Selection, "十", "")
  44.             
  45.             v = Len(Selection)
  46.             Selection.MoveLeft Unit:=wdCharacter, Count:=1
  47.             Do
  48.                 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
  49. Sec:
  50.                 If Selection = "一" Then
  51.                     Selection = "1"
  52.                 ElseIf Selection = "二" Then
  53.                     Selection = "2"
  54.                 ElseIf Selection = "三" Then
  55.                     Selection = "3"
  56.                 ElseIf Selection = "四" Then
  57.                     Selection = "4"
  58.                 ElseIf Selection = "五" Then
  59.                     Selection = "5"
  60.                 ElseIf Selection = "六" Then
  61.                     Selection = "6"
  62.                 ElseIf Selection = "七" Then
  63.                     Selection = "7"
  64.                 ElseIf Selection = "八" Then
  65.                     Selection = "8"
  66.                 ElseIf Selection = "九" Then
  67.                     Selection = "9"
  68.                 ElseIf Selection = "十" Then
  69.                     Selection = "10"
  70.                 ElseIf Selection = "百" Then
  71.                     Selection = "佰"
  72.                 ElseIf Selection = "零" Then
  73.                     Selection = "0"
  74.                 End If

  75.                 Selection.MoveRight Unit:=wdCharacter, Count:=1
  76.                 i = i + 1
  77.             Loop Until i = v
  78.         End If
  79.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  80.         i = 0
  81.     Loop
  82.     MsgBox "处理完毕!——下面请自行执行【第一章/条】宏完成第1条加粗任务!", vbOKOnly + vbExclamation, "第一条转第1条"
  83. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 07:45 , Processed in 0.047008 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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