ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 1、设置行首空格无效,2、通配符替换有问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-23 07:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
那可能是您的文档中没有要找的字符串。
老师代码要找的字符串设定为    .Text = "^13^63^9*^13"    '查找文本,您可修改这个地方再试试

TA的精华主题

TA的得分主题

发表于 2019-2-23 08:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
GONG2816 发表于 2019-2-23 07:20
那可能是您的文档中没有要找的字符串。
老师代码要找的字符串设定为    .Text = "^13^63^9*^13"    '查找 ...

你好!
不是在你提供的附件上运行吗?再想问一下这个^63^9分别是指什么?

TA的精华主题

TA的得分主题

发表于 2019-2-23 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
* 相见是缘:你好!^63是《项目符号》转为纯文本后的符号的ASCII代码,^9是制表符的ASCII代码,就好像^13是回车符代码、^32是空格符代码一样;但你的附件中我发现并不是《项目符号》的符号,而是软键盘或插入符号中的《特殊符号》中的字符(就叫大黑点或黑圆点吧,即“●”),下面是针对你的附件而编辑的代码(注意:你的附件中视图是普通视图,一般不要以这个视图工作,最好是页面视图;但如果你的文档比较大、表格较多、运行紧张的话,也可以用普通视图,以减轻内存压力):
  1. Sub test_设置标题3_相见是缘()
  2.     Dim i As Paragraph
  3.     For Each i In ActiveDocument.Paragraphs
  4.         With i.Range
  5.             If .Text Like "●*" & vbCr Then
  6.                 .Style = "标题 3"
  7.                 .Font.Color = wdColorRed '红色
  8.                 .ParagraphFormat.CharacterUnitFirstLineIndent = 2 '首行缩进2字符
  9.                 .Characters(1).InsertAfter Text:=" " '首字符后面插入空格/美化
  10.             End If
  11.         End With
  12.     Next
  13. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-24 06:52 | 显示全部楼层
老师您好,我已经通过邮箱给您的邮箱发信。可能您还没有注意查看。我的邮箱是 570326066@qq.com

TA的精华主题

TA的得分主题

发表于 2019-2-24 07:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2019-2-23 22:38
* 相见是缘:你好!^63是《项目符号》转为纯文本后的符号的ASCII代码,^9是制表符的ASCII代码,就好像^13是 ...

老师好!老师辛苦!
我也就是把楼主的附件,复制粘贴到我用的03版的office上,运行了你3、4楼的代码,没有反应,不知道你代码中查找的^63、^9这2个符号的意思才提问的,感谢老师答疑解惑!感谢老师的代码!

TA的精华主题

TA的得分主题

发表于 2019-2-24 20:07 | 显示全部楼层
楼主,昨晚我还想着呢,后来编程,就忘了,SORRY,……,马上发!收到后请在帖子中说一声或回个信。
相见是缘:不必客气。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-26 14:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
衷心感谢413191246se老师不厌其烦多次解答,圆满地解决了我的问题。还给我发送了相关VBA资料。大好人啊!
另外我在表格编辑时又碰到了新的问题,链接是 http://club.excelhome.net/thread-1462495-1-1.html,烦请413191246se老师老师百忙中帮助解答。
再次表示感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-28 11:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
      按前面老师的回复,我写了段代码,经过一段时间的运行,发现了新问题
     在所附文档中,本来是将将所有以●开头的段落都修改为特定格式,但实际执行情况只有第2个●能够取得所要结果。第一个●由于是在最开始,其他2个是因为在表格之后,这三处不能正常替换为所需要的表格。

    请大侠指点,问题出在哪里?代码应当如何进一步优化?


      另外请都一下,下面的代码中,第一个部分将段前空格删除,第二部分将段后空格删除,请问能否将两个部分的代码合并起来,以使代码看上去更加简洁。
      Selection.WholeStory '全选文档   
      With Selection.Find    '删除行首的空格。对于段首空2格是不能删除的
        .Text = "^13(^32)@"  
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue  '不询问,直接继续查询
       '.Wrap = wdFindAsk   '询问是否从头继续查询
        .MatchAllWordForms = False
        .MatchWildcards = True  '使用通配符
    End With
    Selection.Find.Execute Replace:=wdReplaceAll


     With Selection.Find    '删除行尾的空格。
        .Text = "(^32)@^13"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue  '不询问,直接继续查询
       '.Wrap = wdFindAsk   '询问是否从头继续查询
        .MatchAllWordForms = False
        .MatchWildcards = True  '使用通配符
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

123.jpg

调整WORD段落格式碰到的问题.zip

24.36 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2019-3-1 14:57 | 显示全部楼层
楼主,你先前的附件中的符号,其实是《项目符号》;而 相见是缘 朋友的附件中的符号,是插入的符号(或软键盘《特殊符号》中的符号。表面都是黑圆点,其实它们是不一样的,处理代码也不同。但现在你的附件中的符号又变为了 相见是缘朋友 的符号,你确定不用《项目符号》中的黑圆点,而用《特殊符号》中的黑圆点了吗?------好了,你可以混用这两个黑圆点了!请试用下面代码:
  1. Sub test()
  2.     Dim i As Paragraph, t As Table
  3. '预处理
  4.     With ActiveDocument
  5.         .Content.Find.Execute "[^13^11]", , , 1, , , , , , "^p", 2 '回车符换行符转段落标记
  6.         .ConvertNumbersToText '自动编号、项目符号转文本
  7. '
  8. '取消所有表格文字环绕(循环遍历所有表格)
  9.         For Each t In .Tables
  10.             With t.Range.Rows
  11.                 .WrapAroundText = False '取消环绕
  12.                 .Alignment = wdAlignRowCenter '居中
  13.             End With
  14.         Next
  15. '
  16. '循环遍历所有段落
  17.         For Each i In .Paragraphs
  18.             With i.Range
  19.                 If Not .Information(12) Then
  20.                     If .Text Like "●*" Then .Font.Color = wdColorRed '字体格式=红色(特殊符号:黑圆点)
  21.                     If .Text Like Chr(63) & vbTab & "*" Then .Font.Color = wdColorPink '字体格式=粉红(项目符号:黑圆点)
  22.                 End If
  23.             End With
  24.         Next
  25.     End With
  26. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-4 11:01 | 显示全部楼层
谢谢。
两种方法比较了下,用录制宏的思路进行查找替换【find】,速度要快不少,但对于查找内容在表格后的内容不能正确找到。
用遍历段落的方法能全部的找到所需查的的内容,但速度要慢一些。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 02:04 , Processed in 0.036300 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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