ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何无需替换或者一一删除,就能让WORD中的段落序号前的大空格消失

[复制链接]

TA的精华主题

TA的得分主题

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

经常从WORD往网文本框里拷贝文字。

由于WORD文件经常有段落编号12345,拷到文本框里,序号后段落前出现一个比正常空格大的一种大空格,由于粘贴的项目序号很多,而且段落层次比较多。

所以一一删除,或者一一替换都太麻烦,有没有简答你的办法让这些大空格小时呢?谢谢各位老师了。

桌面.rar (10.44 KB, 下载次数: 8)

桌面.rar

10.44 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2016-11-26 10:02 | 显示全部楼层
楼主,我猜你说的是自动编号的制表位,如果手动编号就没有,自动就有。在文本框框线上点击一下,然后点击:格式菜单——制表位——默认制表位(调整为 0 或 0.24),再点击下方的“全部清除”,确定即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-26 13:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢413191246se老师的回复,不过我没有找到您说的那个制表位的菜单。

我把我说的WORD文件和TXT效果文件发上来了(实际上是复制到一个网页的文本框里,不会保存任何排版的格式,除了这个大空格,所以和拷贝到txt效果是一样的),就是希望复制后没有任何空格,要不每次都要吭哧吭哧的删半天空格。

您也许会说可以先拷贝到TXT里替换大空格,再拷贝回网页的文本框,不需要VBA。但是因为很多文件都要调整,这样步骤一多,就容易乱了。哈哈,还得求助您啦,谢谢啊

TA的精华主题

TA的得分主题

发表于 2016-11-26 14:25 来自手机 | 显示全部楼层
tosome 发表于 2016-11-26 13:10
谢谢413191246se老师的回复,不过我没有找到您说的那个制表位的菜单。

我把我说的WORD文件和TXT效果文件 ...

需求不明,也无附件

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-26 14:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2016-11-26 14:25
需求不明,也无附件

不好意思,我还上传附件,忘记点击使用了。现在我传上来了,谢谢 :)

TA的精华主题

TA的得分主题

发表于 2016-11-26 15:16 | 显示全部楼层
tosome 发表于 2016-11-26 14:48
不好意思,我还上传附件,忘记点击使用了。现在我传上来了,谢谢 :)
  1. Sub shishi()
  2.    Dim aRange  As Range, mt, str$, fn$
  3.    Application.ScreenUpdating = False
  4.    ActiveDocument.Content.ListFormat.ConvertNumbersToText
  5.    Set aRange = ActiveDocument.Content
  6.    With CreateObject("vbscript.regexp")
  7.       .Global = True: .MultiLine = True
  8.       .Pattern = "(?:^[\s\xa0\u3000]+|[\s\xa0\u3000]+$)|\t+"
  9.       str = .Replace(aRange, "")
  10.    End With
  11.    Debug.Print str
  12.    fn = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1)
  13.    Open ActiveDocument.Path & "" & fn & ".txt" For Output As #1
  14.    Print #1, str
  15.    Close #1
  16.    Application.ScreenUpdating = True
  17.    MsgBox "已经输出到TXT文本!请打开TXT文本再复制粘贴!!!"
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-26 20:31 | 显示全部楼层

谢谢duquancai老师啊,很完美的解决了我的困扰,没有大空格了。

但是还有2个小问题请教您一下。
第一个是不知道如何让1234条目之前的“WORD中效果:”也自己占用一行呢?
第二个是请问如何用转换好的文本内容,直接替换掉WORD文件里带大空格的文本呢。不经过TXT文件,我放上TXT文件只是为了演示效果,嘿嘿,我刚开始学习VBA,初级的简单语句能自己改一下,这种高级操作我还需要多学习才知道怎么弄。

TA的精华主题

TA的得分主题

发表于 2016-11-26 20:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tosome 发表于 2016-11-26 20:31
谢谢duquancai老师啊,很完美的解决了我的困扰,没有大空格了。

但是还有2个小问题请教您一下。
  1. Sub shishi()
  2.    Dim col As New Collection, k&, j&
  3.    Dim mt, oRang As Range, n&, m&
  4.    ActiveDocument.Content.ListFormat.ConvertNumbersToText
  5.    Set oRang = ActiveDocument.Content
  6.    With CreateObject("vbscript.regexp")
  7.       .Pattern = "\t+": .Global = True
  8.       For Each mt In .Execute(oRang)
  9.          k = k + 1
  10.          m = mt.FirstIndex: n = mt.Length
  11.          Set oRang = ActiveDocument.Range(m, m + n)
  12.          col.Add oRang, CStr(k)
  13.       Next
  14.    End With
  15.    For j = 1 To col.Count
  16.       col(j) = ""
  17.    Next
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-26 21:31 | 显示全部楼层

您的提供的代码解决了我的问题啦,减少了好多重复操作呢,真是太谢谢duquancai老师了。

周末愉快啊!

TA的精华主题

TA的得分主题

发表于 2016-11-27 09:34 | 显示全部楼层
这个不就是编号后有制表符的问题吗?
对编号点右键--》“调整列表缩进”--》把“编号之后”的制表符改成“不特别标注”就可以了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 13:44 , Processed in 0.026156 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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