ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-23 08:20 | 显示全部楼层
413191246se 发表于 2015-10-22 20:41
139:高人 loquat 的代码,需要你自己创建一个宏,把他的代码拷贝到该宏里面运行即可。
另外:上面单个文 ...

师傅、我不知那里没弄好,组合的代码还是提取文件名的宏,不是循环遍历文件夹_查找段落符号、换行符设置为黑色的宏。请看附件,还是请师傅出马。

附件.rar

3.58 KB, 下载次数: 22

TA的精华主题

TA的得分主题

发表于 2015-10-23 10:02 | 显示全部楼层
提取文件名的宏,它有两个功能,你仔细看看,有一个选项叫“否”(是---------是 提取文件名,你选否即可)

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-23 12:00 | 显示全部楼层
本帖最后由 13907933959 于 2015-10-23 15:06 编辑
413191246se 发表于 2015-10-23 10:02
提取文件名的宏,它有两个功能,你仔细看看,有一个选项叫“否”(是---------是 提取文件名,你选否即可)

师傅好!

是可以,但对我这个外行感觉步骤还是比较多,主要是以后长了时间也容易忘记,还是想请师傅把它修改成一个单独的循环遍历文件夹_查找段落符号、换行符设置为黑色的宏。


师傅、别忘了在代码中,在查找段落符号、手动换行符时不用鉴别颜色,加几句可鉴别颜色(颜色可换)的代码,不用鉴别时可屏蔽掉。


师傅、再问一个外行话,把单个文档查找段落符/换行符的代码,拷贝到《循环遍历文件夹--提取文件名》这个宏中,运行比较慢(今天中午处理一个56.9MB的文件夹,花了快3个小时,而我的文件总量有6个多G),可不可以把《查找段落符号、换行符设置为黑色》代码的循环方式改成14楼《Sub 循环遍历文件夹_替换英文括号为中文括号()》的循环方式,这种方式快得多。

TA的精华主题

TA的得分主题

发表于 2015-10-23 20:56 | 显示全部楼层
139:
* 用一些文件做为试验文件,3-5 个即可,打包保存。待某宏测试无误后,正式应用之。
* 在使用任何《循环遍历文件夹》这类宏时,一旦运行,不要再动键盘和鼠标(要关闭屏幕保护程序),直至完成,如果想停下来,按 CTRL+PauseBreak键;并且关闭一切无用的程序和窗口。WORD的VBE窗口也要关闭,它太占内存。
* 你另一个帖子,那位网友的宏,其实是在 EXCEL 中使用的宏,因为它的对象是 WorkBook,在 WORD 里是 ActiveDocument。
* 抽检几个段落符/换行符和文件即可,写在代码中不好办,像粉红色是多少,你可以自己录制宏。验证代码是:MsgBox Selection.Font.Color观察它的值即可。

*****下面是你要的宏(先在试验文件中试验):
Sub 循环遍历文件夹_段落符换行符设置黑色()
    On Error Resume Next
    Dim fd As FileDialog, i As Long, doc As Document, p As String
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show = -1 Then p = fd.SelectedItems(1) Else Exit Sub
    Set fd = Nothing
    If MsgBox("是否处理文件夹 " & p & " ?", vbYesNo + vbExclamation, "循环遍历文件夹_段落符换行符设置黑色") = vbNo Then Exit Sub
    With Application.FileSearch
        .NewSearch
        .LookIn = p
        .SearchSubFolders = True
        .FileName = "*.doc"
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                Set doc = Documents.Open(FileName:=.FoundFiles(i))
                With doc.Content.Find
                    .Replacement.Font.Color = wdColorBlack
                    .Execute FindText:="^p", ReplaceWith:="^p", Format:=True, Replace:=wdReplaceAll
                    .Execute FindText:="^l", ReplaceWith:="^l", Format:=True, Replace:=wdReplaceAll
                End With
                doc.Close savechanges:=wdSaveChanges
            Next i
            MsgBox "处理完毕!共处理 " & .FoundFiles.Count & " 个文件!", vbOKOnly + vbExclamation, "循环遍历文件夹_段落符换行符设置黑色"
        Else
            MsgBox "未发现文件!", vbOKOnly + vbCritical, "循环遍历文件夹_段落符换行符设置黑色"
        End If
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-24 08:30 | 显示全部楼层
本帖最后由 13907933959 于 2015-10-24 08:39 编辑
413191246se 发表于 2015-10-23 20:56
139:
* 用一些文件做为试验文件,3-5 个即可,打包保存。待某宏测试无误后,正式应用之。
* 在使用任何 ...

师傅好!
这个宏比那个合并的宏快多了,
多谢师傅!

我也不懂、在运行宏时,屏幕保护程序是没有关闭,怪不得要那么长的时间,这和电脑配置低可能也有关系,在处理文件碰到单个大文件(15MB)时,屏幕变白屏,屏幕最上左角出现一个小四方形白块。

师傅、这个代码你注释的地方少,我看不懂,不知在代码中那行代码,是鉴别查找段落符号、手动换行符时的颜色代码,(不用鉴别时可屏蔽掉)。还请师傅指一下。因为这个鉴别查找的颜色对我很重要,在一个文件中的段落符号、手动换行符,为了方便下一步的处理常常会用到几种颜色(红、绿、黄、蓝、紫、黑)。

师傅、这个宏也可不可用来查找替换其它的文字及符号之类的?如果能就太方便了!

TA的精华主题

TA的得分主题

发表于 2015-10-24 12:44 | 显示全部楼层
139:鉴别颜色,你只须把下面这句代码放到一个宏中(即首句代码是Sub XXX(),末句代码是 End Sub)中即可:
MsgBox Selection.Font.Color
它的用途是:显示选定区域的字体颜色值,你随便用鼠标勾选一个或几个字符(颜色自定)再应用此宏,记住数值,就代码这种颜色的值是多少,红色是255,黑色是0,其它的你自己试验吧!
上面的代码可以替换别的符号,只要把"^p"换成如"^m"或"我你他"即可,但像你说的,最好把它复制后改个宏名。

TA的精华主题

TA的得分主题

发表于 2015-10-24 12:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
139:新代码颜色鉴别加不上,你自己用我给你的 msgbox selection.font.color 测试各个颜色的值即可。
请看下面这段代码:
Sub Macro2()
'设置选定区域的字体颜色
    Selection.Font.Color = wdColorRed '红色
    Selection.Font.Color = wdColorPink '粉红
    Selection.Font.Color = wdColorBlue '蓝色
    Selection.Font.Color = wdColorGreen '绿色
    Selection.Font.Color = wdColorBlack '黑色
End Sub
-----------其中颜色标识是:wdColor后面加各个颜色的英文单词,红(Red),蓝色(Blue),你说你不大会英语,但你也是初中毕业的人,这几个英文单词应该记得住,其它颜色自己探索吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-24 14:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2015-10-24 16:25 编辑
413191246se 发表于 2015-10-24 12:52
139:新代码颜色鉴别加不上,你自己用我给你的 msgbox selection.font.color 测试各个颜色的值即可。
请看 ...

师傅好!

好的。

师傅、刚才试了一下,把这个宏里面的替换设置为空,不能实现,查找的是什么,替换的还是什么,不知是什么原因?


TA的精华主题

TA的得分主题

发表于 2015-10-24 17:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
.Execute FindText:="^p", ReplaceWith:="^p", Format:=True, Replace:=wdReplaceAll
Format意思是“格式”,True意思是“真”,替换的是格式,但同时也替换字符串,自己试验吧!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-24 19:21 | 显示全部楼层
本帖最后由 13907933959 于 2015-10-25 07:24 编辑
413191246se 发表于 2015-10-24 17:37
.Execute FindText:="^p", ReplaceWith:="^p", Format:=True, Replace:=wdReplaceAll
Format意思是“格式 ...

师傅好!
一二下也看不懂,还是请师傅加上代码,让这个宏里面的替换可以替换为无。谢谢!

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

本版积分规则

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

GMT+8, 2025-1-15 18:05 , Processed in 0.024110 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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