ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-28 16:37 | 显示全部楼层
本帖最后由 13907933959 于 2016-4-29 07:01 编辑
413191246se 发表于 2016-4-28 14:57
139:我仍然不明白你的意思,请举例详述之(上面单文档代码已经设置了红色)。

师傅好!

就是想请您再编写一个“数字之间中文冒号转换为英文冒号”的宏,但它的判别条件,是通过把数字之间的中文冒号变色的方法,如把这个数字之间的中文冒号变为蓝色,再查找蓝色的中文冒号,替换为黑色的英文冒号。

循环遍历和处理单个文档的
2个宏都想请师傅给一下。

TA的精华主题

TA的得分主题

发表于 2016-4-29 09:46 | 显示全部楼层
139:明明可以一步完成,你非要两步完成,多此一举啊!(不过,仍然提供了你要求的代码。)
单文档两步代码:
  1. Sub 查找数字之间的中文冒号()
  2.     Selection.HomeKey Unit:=wdStory
  3.     Selection.Find.ClearFormatting
  4.     Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  5.         Selection.MoveStart Unit:=wdCharacter, Count:=-1
  6.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  7.         If Selection Like "[0-9]?[0-9]" Then
  8.             Selection.MoveStart Unit:=wdCharacter, Count:=1
  9.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  10.             Selection.Font.Color = wdColorRed '红色
  11.         End If
  12.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  13.     Loop
  14. End Sub
  15. Sub 查找数字之间的红色中文冒号()
  16.     Selection.HomeKey Unit:=wdStory
  17.     Selection.Find.ClearFormatting
  18.     Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  19.         Selection.MoveStart Unit:=wdCharacter, Count:=-1
  20.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  21.         If Selection Like "[0-9]?[0-9]" Then
  22.             Selection.MoveStart Unit:=wdCharacter, Count:=1
  23.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  24.             If Selection.Font.Color = wdColorRed Then Selection.Text = ":"
  25.         End If
  26.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  27.     Loop
  28. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-4-29 09:50 | 显示全部楼层
多文档代码(未做测试,每篇文档为红色不好吧?)
  1. Sub 循环遍历文件夹_查找数字之间中文冒号_Part1()
  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.                 'Sub 查找数字之间的中文冒号()
  18.                 Selection.HomeKey Unit:=wdStory
  19.                 Selection.Find.ClearFormatting
  20.                 Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  21.                     Selection.MoveStart Unit:=wdCharacter, Count:=-1
  22.                     Selection.MoveEnd Unit:=wdCharacter, Count:=1
  23.                     If Selection Like "[0-9]?[0-9]" Then
  24.                         Selection.MoveStart Unit:=wdCharacter, Count:=1
  25.                         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  26.                         Selection.Font.Color = wdColorRed '红色
  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
  39. Sub 循环遍历文件夹_数字之间红色中文冒号转英文_Part2()
  40.     On Error Resume Next
  41.     Dim fd As FileDialog, i As Long, doc As Document, p As String
  42.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  43.     If fd.Show = -1 Then p = fd.SelectedItems(1) Else Exit Sub
  44.     Set fd = Nothing
  45.     If MsgBox("是否处理文件夹 " & p & " ?", vbYesNo + vbExclamation, "循环遍历文件夹_通用") = vbNo Then Exit Sub
  46.     With Application.FileSearch
  47.         .NewSearch
  48.         .LookIn = p
  49.         .SearchSubFolders = True
  50.         .FileName = "*.doc"
  51.         If .Execute > 0 Then
  52.             For i = 1 To .FoundFiles.Count
  53.                 Set doc = Documents.Open(FileName:=.FoundFiles(i))
  54. '''                doc.Content.Font.Color = wdColorRed '处理单个文档(通用)
  55.                 'Sub 查找数字之间的红色中文冒号()
  56.                 Selection.HomeKey Unit:=wdStory
  57.                 Selection.Find.ClearFormatting
  58.                 Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  59.                     Selection.MoveStart Unit:=wdCharacter, Count:=-1
  60.                     Selection.MoveEnd Unit:=wdCharacter, Count:=1
  61.                     If Selection Like "[0-9]?[0-9]" Then
  62.                         Selection.MoveStart Unit:=wdCharacter, Count:=1
  63.                         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  64.                         If Selection.Font.Color = wdColorRed Then Selection.Text = ":"
  65.                     End If
  66.                     Selection.MoveRight Unit:=wdCharacter, Count:=1
  67.                 Loop
  68. '''
  69.                 doc.Close savechanges:=wdSaveChanges
  70.             Next i
  71.             MsgBox "处理完毕!共处理 " & .FoundFiles.Count & " 个文件!", vbOKOnly + vbExclamation, "循环遍历文件夹_通用"
  72.         Else
  73.             MsgBox "未发现文件!", vbOKOnly + vbCritical, "循环遍历文件夹_通用"
  74.         End If
  75.     End With
  76. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-29 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-5-11 14:51 编辑
413191246se 发表于 2016-4-29 09:46
139:明明可以一步完成,你非要两步完成,多此一举啊!(不过,仍然提供了你要求的代码。)
单文档两步代 ...

师傅好!
我的意思是把这2个单个文档的宏合为一个宏。
另外、这个第2个
单个附件上运行了,
好象还少了一步,把红色的中文冒号替换为黑色的英文冒号的步骤,请师傅一起修改一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-29 11:04 | 显示全部楼层
本帖最后由 13907933959 于 2016-5-11 14:50 编辑
413191246se 发表于 2016-4-29 09:50
多文档代码(未做测试,每篇文档为红色不好吧?)

师傅好!
我的意思不是把每篇文档都变为红色,只是想把文档内数字与数字之间的中文冒号变为红色,再查找红色的中文冒号,替换为黑色的英文冒号。

师傅、请把这2个循环遍历文件夹的宏合为一个宏。另外、这个第2个循环遍历文件夹的附件上运行了,好象少了一步,把红色的中文冒号替换为黑色的英文冒号的步骤,请师傅一起修改一下。

TA的精华主题

TA的得分主题

发表于 2016-5-3 15:33 | 显示全部楼层
139:你原来说分两步,现在又要合成一步,如果合成一步的话,那就没必要再找到中文冒号设为红色,再把红色替换为黑色英文冒号了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-4 07:30 | 显示全部楼层
本帖最后由 13907933959 于 2016-5-11 14:53 编辑
413191246se 发表于 2016-5-3 15:33
139:你原来说分两步,现在又要合成一步,如果合成一步的话,那就没必要再找到中文冒号设为红色,再把红色 ...

师傅好!
抱歉!由于徒弟的表达能力差,总不能很准确的描述问题,让师傅产生误判、请见谅!

我的意思是说、一个宏里面包含这二步功能:
第一步、查找中文冒号→替换为红色英文冒号
第二步、查找红色英文冒号→替换为黑色

先前师傅以给了一个一步到位解决问题的宏,但不是用变颜色的方法。
这次师傅用了变颜色的方法,却把它分成了2个单独的宏,里面还都少了一步:查找红色英文冒号→替换为黑色
劳请师傅再加上这一步。




TA的精华主题

TA的得分主题

发表于 2016-5-4 10:08 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-4 11:34 | 显示全部楼层
413191246se 发表于 2016-5-4 10:08
139:查找红色,给谁看?

师傅好!
没明白您的意思!

TA的精华主题

TA的得分主题

发表于 2016-5-4 15:02 | 显示全部楼层
本帖最后由 413191246se 于 2016-5-4 15:04 编辑

139:此宏瞬息完成,一气呵成!中间变为红色再变为黑色,完全没有必要。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-14 19:51 , Processed in 0.023275 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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