ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何把表格与前后文字用段落标记分开?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-26 05:24 | 显示全部楼层 |阅读模式
本帖最后由 gemj 于 2018-10-26 05:33 编辑

如何把表格与前后文字用段落标记分开?

好比上面的这段文字,有时会用好比:
^13[A-E]
之类的表达式,对文档进行处理。
但因为A之前貌似段落标记的标记,其实不是段落标记,所以,用这个表达查不到A选项,这就容易引起很麻烦的问题。

表格的上方也是,上方的段落标记,无法象一般的段落标记一样,进行正常的替换操作。
之前就有个帖子说明过这个问题:
http://club.excelhome.net/thread-231117-1-1.html

现在的问题是,如果有VBA代码,能把表格前后,各加好比两个段落标记,那有时就方便太多了。

另外,文档处理完毕收工时,又不能让表格与前后文字相距那么远,再用个作用相反的VBA把表格前后多余的段落标记清除掉呢?好比收工时,就是文档现在的这个样子。

感觉这是件功德圆满的事情,代码高手们出手相助下?

42.rar

21.56 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2018-10-26 08:03 | 显示全部楼层
[A-E][\..]
之类的表达式,对文档进行处理。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-26 09:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有时如果不以^13开始,会误伤。

TA的精华主题

TA的得分主题

发表于 2018-10-26 12:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gemj 发表于 2018-10-26 09:40
有时如果不以^13开始,会误伤。
  1. Sub main()
  2.     Dim tb As Table, doc As Document, q As Range
  3.     Set doc = ActiveDocument
  4.     If doc.Tables.Count = 0 Then Exit Sub
  5.     For Each tb In doc.Tables
  6.         Set q = tb.Range
  7.         With q.Duplicate
  8.             If .Start <> 0 Then
  9.                 With .Previous
  10.                     .Collapse
  11.                     .MoveStartWhile Chr(13) & Chr(32), wdBackward
  12.                     .Text = Empty: .InsertAfter vbCr
  13.                 End With
  14.             End If
  15.         End With
  16.         With q
  17.             With .Next
  18.                 .Collapse: .MoveEndWhile Chr(13) & Chr(32)
  19.                 .Text = Empty
  20.                 If .Start < doc.Content.End - 1 Then .InsertAfter vbCr
  21.             End With
  22.         End With
  23.     Next
  24. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-26 12:18 | 显示全部楼层
感谢感谢!又快又好啊!这是添加段落标记,完工后删除掉多余的呢?谢谢啦!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-26 12:21 | 显示全部楼层
本帖最后由 gemj 于 2018-10-26 12:22 编辑

WORD表格后面段落标记的问题,我觉得倒是好理解,就本例而言,可以理解为A选项跟表格之间,根本就是一体的,本来就没有段落标记分隔,表格最后的那个看起来象段落标记的符号,其实本来就是表格的一个组成部分,跟段落分隔,本来就无关。

但从文字处理的角度,如果没有一种手段,把表格和紧随其后的文字分开,还是很不方便的。

但表格上方的这个段落标记,就有些费解了。为什么赋予这个段落标记这么奇怪的属性?

把上下综合起来理解,相当于表格的前后,各有一个保护层。

但上面的这个段落标记,貌似,更麻烦些,因为能查找到,但不能处理,而且,还影响到整个替换表达式的工作。

好比,如果把^13{1,}替换为^p,明明是能查找到,但却处理不了。
问题是这只是三个连续段落标记,如果是10个呢?那处理的时候,就得考虑这个因素,得先用好比把^13{2}替换为^p的办法,多次替换,才能把夸张的多个连续的段落标记给清理掉,当然表格前的那个空段落标记,还是处理不了的。
        
为防止这种情况,我感觉比较合理的方案,处理文档之前,先把表格前后,包裹一层保护的文字,好比这样:
(见附件)

这样,表格就不影响通配符表达式的正常工作。
等文档完工时,再把前后的文字清除掉,如果需要的话,把表格前后的空段落标记也给清理掉。

如果日后需要再次处理,再运行代码给加上。这样,处理文档就少了一份顾忌和麻烦。

42_2.rar

22.33 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2018-10-26 12:22 来自手机 | 显示全部楼层
gemj 发表于 2018-10-26 12:18
感谢感谢!又快又好啊!这是添加段落标记,完工后删除掉多余的呢?谢谢啦!

你不知道自己修改啊?没那么多时间为你服务。

TA的精华主题

TA的得分主题

发表于 2018-10-26 12:26 来自手机 | 显示全部楼层
gemj 发表于 2018-10-26 12:21
WORD表格后面段落标记的问题,我觉得倒是好理解,就本例而言,可以理解为A选项跟表格之间,根本就是一体的 ...

这么简单的问题,说那么多干嘛?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-26 12:26 | 显示全部楼层
duquancai 发表于 2018-10-26 12:22
你不知道自己修改啊?没那么多时间为你服务。

已经很感谢啦!就是不会呀~

TA的精华主题

TA的得分主题

发表于 2018-10-26 12:28 来自手机 | 显示全部楼层
本帖最后由 duquancai 于 2018-10-26 12:29 编辑
gemj 发表于 2018-10-26 12:18
感谢感谢!又快又好啊!这是添加段落标记,完工后删除掉多余的呢?谢谢啦!


没有多余的,多余的都被干掉了!始终保证表格前后各一个 回车符
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-26 06:07 , Processed in 0.027153 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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