ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个查找文档内多余的标点符号并把它们改为蓝色的宏代码

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-27 19:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2015-10-27 09:11
给文件编号,可以用 ACDSee 来做,不会查查网络即可。

师傅好!

这个宏一样的好用,一样的蓝波湾!感谢师傅!

在处理文件前,总是感觉文件太多太多,师傅的工具一到,又感觉文件太少太少,还没过瘾就完了,师傅、有时我故意处理个2、3遍过过瘾。师傅、我知道我这边痛快了,师傅你那边可忙坏了,为了笨徒无休止的问题,师傅付出了很多的时间和精力,感谢你!师傅!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-29 20:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2015-10-30 10:18 编辑
413191246se 发表于 2015-10-27 09:11
给文件编号,可以用 ACDSee 来做,不会查查网络即可。

师傅好!

还没让您休息2天,徒弟又有事要求您帮忙,想求师傅编写一个含有下面功能的宏。

在不更改文档正文中、数字中的小数点的前提下:

如:0.X  0.XX   0.XXX   0.XXXX  X.XXX  XX.X   XX.XX  XX.XXX   XXX.X   XXX.XX   XXX.XXX  XXXX.X   XXXX.XX  XXXX.XXX (X为 0 — 9 任意不同的数字)。

一、将文档正文中的英文半角标点符号全部替换成中文全角标点符号。

二、将文档正文中,如文句尾末含有点号的“.”替换成中文句号“。”

三、把各小标题编号后面的标点符号全部替换为中文顿号。
1、将小标题数字编号后面的点号“.”替换成顿号“、”
2、将小标题数字编号后面的逗号“,”替换成顿号“、”
3、将小标题数字编号后面的句号“。”替换成顿号“、”

共有12种:

点号分为4种:
⑴、将小标题数字编号后面有空格、有点号的替换成顿号“、”
⑵、将小标题数字编号后面有空格、没有点号的替换成顿号“、”
⑶、将小标题数字编号后面有点号、没有空格的替换成顿号“、”
⑷、将小标题数字编号后面没有空格、没有点号的替换成顿号“、”

逗号分为4种:
⑴、将小标题数字编号后面有空格、有逗号的替换成顿号“、”
⑵、将小标题数字编号后面有空格、没有逗号的替换成顿号“、”
⑶、将小标题数字编号后面有逗号、没有空格的替换成顿号“、”
⑷、将小标题数字编号后面没有空格、没有逗号的替换成顿号“、”

句号分为4种:
⑴、将小标题数字编号后面有空格、有句号的替换成顿号“、”
⑵、将小标题数字编号后面有空格、没有句号的替换成顿号“、”
⑶、将小标题数字编号后面有句号、没有空格的替换成顿号“、”
⑷、将小标题数字编号后面没有空格、没有句号的替换成顿号“、”

实例请师傅查看附件!

附件.rar

8.39 KB, 下载次数: 27

TA的精华主题

TA的得分主题

发表于 2015-10-31 12:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 413191246se 于 2015-10-31 13:34 编辑

139:*** 如果全部替换一个符号,请用:    ActiveDocument.Content.Find.Execute findtext:="^13", ReplaceWith:="^p", Replace:=wdReplaceAll
*** 如果全部替换多个符号,请用:
Sub 规范标点()
    With ActiveDocument.Content.Find
        .Execute findtext:="(", ReplaceWith:="(", Replace:=wdReplaceAll
        .Execute findtext:=")", ReplaceWith:=")", Replace:=wdReplaceAll
        .Execute findtext:=")、", ReplaceWith:=")", Replace:=wdReplaceAll
        .Execute findtext:=".", ReplaceWith:=".", Replace:=wdReplaceAll
        .Execute findtext:=". ", ReplaceWith:=".", Replace:=wdReplaceAll
        .Execute findtext:="、 ", ReplaceWith:="、", Replace:=wdReplaceAll
    End With
End Sub

******************另外:根据《公文》要求,中文排版中数目字使用是这样的:
一、XXX
(一)XXX
1.XXX(注意-----这个1后面的点,不是小数点,小数点是半角,而这个点是用软键盘插入的全角的点,叫《齐线墨点》,我有两个宏,小数点变齐线墨点/顿号变齐线墨点)
(1)XXX
********所以你的要求,在数字后面小数点变顿号,是不是应该变为《齐线墨点》才好?这样才规范、整齐,与国家标准接轨。
********
********下面是《英文标点转中文》宏,我只列举了一种标点:句号,其它的你自己扩充吧(只须变换相应标点,先复制《句号》段代码)!——你的附件中,要求太多了,我想应该逐步阐述才好。
************
Sub 英文标点转中文()
'句号
    Selection.HomeKey unit:=wdStory
    Do
        Selection.Find.ClearFormatting
        Selection.Find.Execute findtext:="." '英文半角
        If Selection.Find.Found = True Then
            Selection.MoveStart unit:=wdCharacter, Count:=-1
            If Asc(Selection) < 0 Then Selection.Characters.Last.Text = "。" '中文全角
            Selection.MoveRight unit:=wdCharacter, Count:=1
        End If
    Loop Until Selection.Find.Found = False
'----------------------------------------------------
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-31 19:52 | 显示全部楼层
本帖最后由 13907933959 于 2015-11-2 06:53 编辑
413191246se 发表于 2015-10-31 12:44
139:*** 如果全部替换一个符号,请用:    ActiveDocument.Content.Find.Execute findtext:="^13", Replac ...

师傅好!感谢您每次的额外传教!

师傅、我以前也和你说过,整理这些东西,绝大多数是听我中医师傅的意思,他也不太懂什么国家标准,什么规范、整齐。我就是按他的意思整理完就好,当然我也从中受益二点:一个这些东西对我以后有用,二一个多少能学到一些电脑知识。

师傅、你说让我自己扩充(只须变换相应标点,先复制《句号》段代码),是不是从这句开始复制Selection.HomeKey unit:=wdStory至Loop Until Selection.Find.Found = False结束,然后把Selection.HomeKey unit:=wdStory放在Loop Until Selection.Find.Found = False这句的下面即可?

师傅、另外两个宏,小数点变齐线墨点/顿号变齐线墨点,没有看到。





TA的精华主题

TA的得分主题

发表于 2015-11-1 01:06 | 显示全部楼层
139:除《过程》标识首末两句代码外,其它的就是程序主体代码了,从注释:'句号行开始一直到'-------这几行代码就是《英文句点变中文句号》的处理代码(正数第2行直到倒数第2行),你只须将这几句代码再复制 N 遍,修改相应的中英文标点即可,放在 End Sub 之前。
**************************
Sub 顿号变齐线墨点()
    Selection.HomeKey unit:=wdStory
    Do
        Selection.Find.Execute findtext:="^#、", Forward:=True, Wrap:=wdFindStop
        If Selection.Find.Found = True Then
'            Selection.Font.Color = wdColorRed '红色
            Selection.Characters.Last.Text = "."
        Else
            Exit Do
        End If
        Selection.MoveRight unit:=wdCharacter, Count:=1
    Loop
End Sub
Sub 小数点变齐线墨点()
    Selection.HomeKey unit:=wdStory
    Do
        Selection.Find.Execute findtext:="^#.", Wrap:=wdFindStop
        If Selection.Find.Found = True Then
            Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
            If Not (Selection.Characters.Last.Text Like "[0-9]") Then
                Selection.MoveLeft unit:=wdCharacter, Count:=1, Extend:=wdExtend
'                Selection.Font.Color = wdColorRed '红色
                Selection.Characters.Last.Text = "."
            End If
        Else
            Exit Do
        End If
        Selection.MoveRight unit:=wdCharacter, Count:=1
    Loop
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-1 15:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2015-11-1 15:57 编辑
413191246se 发表于 2015-11-1 01:06
139:除《过程》标识首末两句代码外,其它的就是程序主体代码了,从注释:'句号行开始一直到'-------这几行 ...

师傅、这两个宏是前天在论坛上看到一个“Word用宏将英文标点转换为中文标点,但不转换小数点”帖子,从一位shenghua8前辈那里得到的回复得来的,这两个宏也能实现我的部分要求,想求师傅在功能、顺序不变的前题下把它们合为一个宏。

Sub 将点号转换为句号_但不转换小数点1()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([!0-9])\.([!0-9])"
.Replacement.Text = "\1。\2"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.ExecuteReplace:=wdReplaceAll
End Sub


Sub 小标题编号后面的标点改为顿号_但不转换小数点2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([0-9]@)[..]([!0-9)])"
.Replacement.Text = "\1、\2"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.ExecuteReplace:=wdReplaceAll
End Sub

附件.rar

5.17 KB, 下载次数: 24

TA的精华主题

TA的得分主题

发表于 2015-11-2 10:11 | 显示全部楼层
139:两个宏确实没有问题!宏也叫过程、程序,标志是第一句必须是 Sub XXX(),最后一句是 End Sub,所以,只须将每个《过程》的末尾两句删除即可:
Sub 将点号转换为句号_但不转换小数点1()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
    .Text = "([!0-9])\.([!0-9])"
    .Replacement.Text = "\1。\2"
    .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
   
'小标题编号后面的标点改为顿号_但不转换小数点2
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
    .Text = "([0-9]@)[..]([!0-9)])"
    .Replacement.Text = "\1、\2"
    .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
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-2 11:03 | 显示全部楼层
本帖最后由 13907933959 于 2015-11-3 09:06 编辑
413191246se 发表于 2015-10-31 12:44
139:*** 如果全部替换一个符号,请用:    ActiveDocument.Content.Find.Execute findtext:="^13", Replac ...

师傅好!
在用 “Sub 规范标点()” 该宏查找替换这2种 &#10102; (为MS Gothic字体)标题符号时,查找替换不了,劳请师傅加一句识别该符号或该字体的代码。
师傅、还有一个标题编号在网页上显示为一(不对),请看附件里面的。

附件.rar

2.7 KB, 下载次数: 26

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-3 07:27 | 显示全部楼层
本帖最后由 13907933959 于 2015-11-3 08:56 编辑

师傅好!
我有新帖要师傅帮忙,详情请查看我的帖子:向前辈们求一个“查找文档中不成对的符号标为红色”的宏。

TA的精华主题

TA的得分主题

发表于 2015-11-3 11:14 | 显示全部楼层
&#10102;一 (为MS Gothic字体)标题符号时,查找替换不了----------这个问题,暂时束手无策,139。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 21:41 , Processed in 0.027734 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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