ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个把多层文件夹内文档内任意数字与任意数字之间的:替换成∶的宏。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-4-24 15:39 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-4-26 11:46 编辑

    因各个内文档内多处还有这种冒号:只想把任意数字与任意数字之间的冒号:替换成这个冒号∶

    想先请前辈们把任意数字与任意数字之间的这个冒号:及这个冒号前后相邻的两个数字变为白色,再把这个白色的冒号:替换成这个冒号∶再查找白色替换为黑色。当然、如前辈们有更好的方法更好!
   
   求前辈们出手相助、谢谢!

模拟附件.rar

3.27 KB, 下载次数: 53

TA的精华主题

TA的得分主题

发表于 2016-4-26 09:34 | 显示全部楼层
楼主,你应该说,把数字与数字之间的中文冒号:全部替换为英文冒号:,并举一个例子才好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-26 11:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2016-4-26 11:13 编辑
413191246se 发表于 2016-4-26 09:34
楼主,你应该说,把数字与数字之间的中文冒号:全部替换为英文冒号:,并举一个例子才好。

师傅好!

抱歉!描述不准确,请师傅见谅!

把数字与数字之间的中文冒号:全部替换为英文冒号: 文档内其它处的中文冒号:则不替换。

刚刚上传了模拟附件,请师傅查看!

TA的精华主题

TA的得分主题

发表于 2016-4-27 11:12 | 显示全部楼层
  1. Sub 循环遍历文件夹_数字之间中文冒号转英文()
  2.     On Error Resume Next
  3.     Dim fd As FileDialog, i As Long, doc As Document, p As String
  4.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  5.     If fd.Show = -1 Then p = fd.SelectedItems(1) Else Exit Sub
  6.     Set fd = Nothing
  7.     If MsgBox("是否处理文件夹 " & p & " ?", vbYesNo + vbExclamation, "循环遍历文件夹_通用") = vbNo Then Exit Sub
  8.     With Application.FileSearch
  9.         .NewSearch
  10.         .LookIn = p
  11.         .SearchSubFolders = True
  12.         .FileName = "*.doc"
  13.         If .Execute > 0 Then
  14.             For i = 1 To .FoundFiles.Count
  15.                 Set doc = Documents.Open(FileName:=.FoundFiles(i))
  16. '''                doc.Content.Font.Color = wdColorRed '处理单个文档(通用)
  17.                 Selection.HomeKey Unit:=wdStory
  18.                 Selection.Find.ClearFormatting
  19.                 Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  20.                     Selection.MoveStart Unit:=wdCharacter, Count:=-1
  21.                     Selection.MoveEnd Unit:=wdCharacter, Count:=1
  22.                     If Selection Like "[0-9]?[0-9]" Then
  23.             '            Selection.Font.Color = wdColorRed '红色
  24.                         Selection.MoveStart Unit:=wdCharacter, Count:=1
  25.                         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  26.                         Selection.Text = ":"
  27.                     End If
  28.                     Selection.MoveRight Unit:=wdCharacter, Count:=1
  29.                 Loop
  30. '''
  31.                 doc.Close savechanges:=wdSaveChanges
  32.             Next i
  33.             MsgBox "处理完毕!共处理 " & .FoundFiles.Count & " 个文件!", vbOKOnly + vbExclamation, "循环遍历文件夹_通用"
  34.         Else
  35.             MsgBox "未发现文件!", vbOKOnly + vbCritical, "循环遍历文件夹_通用"
  36.         End If
  37.     End With
  38. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-27 14:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2016-4-27 15:02 编辑

师傅好!

代码刚测试了、OK+OK!

代码中的这一段,师傅的意思是不是也可用以“处理单个文档”?如可以、要怎样完善?

               'doc.Content.Font.Color = wdColorRed '处理单个文档(通用)  '关闭并保存 doc文档
                Selection.HomeKey Unit:=wdStory  '移动光标至文档开始
                Selection.Find.ClearFormatting  '清除查找框内的格式
                Do While Selection.Find.Execute(FindText:=":", Forward:=True)▲
                    Selection.MoveStart Unit:=wdCharacter, Count:=-1▲
                    Selection.MoveEnd Unit:=wdCharacter, Count:=1▲
                    If Selection Like "[0-9]?[0-9]" Then▲
                      ' Selection.Font.Color = wdColorRed  '设置字体颜色、红色。
                        Selection.MoveStart Unit:=wdCharacter, Count:=1  '执行一次操作后,光标右移一格。■
                        Selection.MoveEnd Unit:=wdCharacter, Count:=-1  '执行一次操作后,移动光标至当前行尾■
                        Selection.Text = "∶"  '替换为的字符■
                    End If  '结束循环
                    Selection.MoveRight Unit:=wdCharacter, Count:=1  '执行一次操作后,光标向后移动一位■
                Loop▲

劳请师傅注释一下5个带▲形的语句,不知道它的意思,另外、4个带■形的语句注释,也请师傅看一下是否正确???

TA的精华主题

TA的得分主题

发表于 2016-4-27 16:05 | 显示全部楼层
本帖最后由 413191246se 于 2016-4-27 16:07 编辑

139:你说的正确!该段代码确实是处理单个文档,然后再放到循环遍历文件夹的通用代码中即可。下面我重新提供一下单个文档数字之间中文冒号转换为英文冒号的代码及注释:(你可在VBE中,光标放在该代码区域,然后按F8一步一步地执行该宏,以了解具体情况。当循环失去控制时,按Ctrl+PauseBreak组合键即可)
  1. Sub 数字之间中文冒号替换为英文()
  2.     Selection.HomeKey Unit:=wdStory '光标移至文首
  3.     Selection.Find.ClearFormatting '清除格式
  4.     Do While Selection.Find.Execute(FindText:=":", Forward:=True) '循环控制语句 Do...Loop(循环开始)
  5.         Selection.MoveStart Unit:=wdCharacter, Count:=-1 '选定区域首部(Start是“开始”的意思)向后(左)扩展一个字符
  6.         Selection.MoveEnd Unit:=wdCharacter, Count:=1 '选定区域尾部(End是“结束”的意思)向前(右)扩展一个字符
  7.         If Selection Like "[0-9]?[0-9]" Then '判断语句 If语句(开始)----如果选定区域像/类似于(like)“数字?数字”的话--[0-9]意思是0-9中的任意一个数字均可,?号代表单个字符,*号代表若干字符
  8.             Selection.Font.Color = wdColorRed '红色----此语句可有可无,只是为了醒目、鲜明(如果循环遍历文件夹的话最好注释掉,即前面加一个'号)
  9.             Selection.MoveStart Unit:=wdCharacter, Count:=1 '选定区域首部(Start是“开始”的意思)向前(右)扩展一个字符
  10.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1 '选定区域尾部(End是“结束”的意思)向后(左)缩减一个字符
  11.             Selection.Text = ":" '选定区域(Selection)的文本属性值(Text)
  12.         End If '判断语句 If语句(结束)
  13.         Selection.MoveRight Unit:=wdCharacter, Count:=1 '选定区域光标向右移动一个字符
  14.     Loop '循环控制语句 Do...Loop(循环结束)
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-27 20:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-4-28 08:35 编辑
413191246se 发表于 2016-4-27 16:05
139:你说的正确!该段代码确实是处理单个文档,然后再放到循环遍历文件夹的通用代码中即可。下面我重新提 ...

师傅好!
处理单个文档,“数字之间中文冒号转换为英文冒号”的代码,刚才测试一样的OK!师傅把代码注释的再详细不过,让徒弟受益非浅!

师傅、能不能再劳您编写一个使其变色的方法也可达到目的的代码?我好以后可利用该代码达到扩展使用的目的。
拜谢师傅!!!



TA的精华主题

TA的得分主题

发表于 2016-4-28 10:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
139:模棱两可,无从下手。请详细说明之。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-28 10:58 | 显示全部楼层
413191246se 发表于 2016-4-28 10:40
139:模棱两可,无从下手。请详细说明之。

师傅好!
就是通过让数字之间的中文冒号变色的方法,达到替换中文冒号的目的,再编写一个“数字之间中文冒号转换为英文冒号”的宏,我以后可利用该代码达到扩展使用。

TA的精华主题

TA的得分主题

发表于 2016-4-28 14:57 | 显示全部楼层
139:我仍然不明白你的意思,请举例详述之(上面单文档代码已经设置了红色)。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-14 19:26 , Processed in 0.025067 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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