ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何把word文档内每一行开头的第一个文字一次批量的改变颜色或字体?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-11-10 14:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2016-11-10 10:26
前辈好!
抱歉!抱歉!怪我描述不准、让您产生误判,请前辈原谅!
  1. Sub 字符设置格式()
  2.     Dim c As New Collection, oPage As Page, oLine As Line, rng As Range, r%
  3.     r = InputBox("请输入字符数")
  4.     On Error Resume Next
  5.     For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  6.         For Each oLine In oPage.Rectangles(1).Lines
  7.             If r <= oLine.Range.End - oLine.Range.Start Then
  8.                 n = n + 1
  9.                 Set rng = ActiveDocument.Range(oLine.Range.Start + r - 1, oLine.Range.Start + r)
  10.                 c.Add rng, CStr(n)
  11.             End If
  12.         Next
  13.     Next
  14.     For i = 1 To c.Count
  15.         With c(i).Font
  16.             .Name = "黑体"
  17.             .Name = "Times New Roman"
  18.             .Size = 12
  19.             .Bold = True
  20.             .Color = wdColorRed
  21.         End With
  22.     Next
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-10 15:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-11-12 08:40 编辑
前辈好!
抱歉!抱歉!前天弄错了,对不住!对不住!
今天重新测试了,代码准确无误。
拜谢前辈!

TA的精华主题

TA的得分主题

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

前辈好!
如反过来、从文档每一行的未尾(即文档内右标尺内的第一个字符)、自右往左,指定字符位数设置格式,前辈可有办法?
原因是用前辈给的这个代码设置格式时,因文档每一行标点符号、数字、符号、的多少及文字的紧密度不尽相同,导致无法准确锁定每一行未尾的字符(即文档内右标尺内的第一个字符),想求前辈再帮忙!拜谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-14 07:06 | 显示全部楼层

前辈好!
如反过来、从文档每一行的未尾(即文档内右标尺内的第一个字符)、自右往左,指定字符位数设置格式,前辈可有办法?
原因是用前辈给的这个代码设置格式时,因文档每一行标点符号、数字、符号、的多少及文字的紧密度不尽相同,导致无法准确锁定每一行未尾的字符(即文档内右标尺内的第一个字符),想求前辈再帮忙!拜谢!

TA的精华主题

TA的得分主题

发表于 2016-11-14 10:28 | 显示全部楼层
13907933959 发表于 2016-11-14 07:06
前辈好!
如反过来、从文档每一行的未尾(即文档内右标尺内的第一个字符)、自右往左,指定字符位数设置 ...
  1. Sub 字符设置格式()
  2.    Dim c As New Collection, oPage As Page, oLine As Line, rng As Range, r%
  3.    r = InputBox("请输入字符数")
  4.    On Error Resume Next
  5.    For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  6.       For Each oLine In oPage.Rectangles(1).Lines
  7.          If r <= oLine.Range.End - oLine.Range.Start Then
  8.             n = n + 1
  9.             Set rng = ActiveDocument.Range(oLine.Range.End - r, oLine.Range.End - (r - 1))
  10.             rng.Select
  11.             c.Add rng, CStr(n)
  12.          End If
  13.       Next
  14.    Next
  15.    For i = 1 To c.Count
  16.       With c(i).Font
  17.          .Name = "黑体"
  18.          .Name = "Times New Roman"
  19.          .Size = 10
  20.          .Bold = True
  21.          .Color = wdColorRed
  22.       End With
  23.    Next
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-14 10:38 | 显示全部楼层
本帖最后由 13907933959 于 2016-11-14 11:10 编辑

前辈好!
好像还不能准确锁定。

TA的精华主题

TA的得分主题

发表于 2016-11-14 10:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
13907933959 发表于 2016-11-14 10:38
前辈好!好像还不能准确锁定。请见附件。

仔细看。。。。。。。(字号最好设置和原来文档中的字号一致,以便观察!!!)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-14 11:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2016-11-15 06:51 编辑
duquancai 发表于 2016-11-14 10:40
仔细看。。。。。。。(字号最好设置和原来文档中的字号一致,以便观察!!!)

前辈好!
按您教的就OK了。
抱歉!抱歉!水平不够+没注意,对不住!对不住!
重新测试了,代码准确无误。
前辈、可否劳您再把 “手动换行符”、“ 段落符”,排除在外,不算在指定字符的位数内。


TA的精华主题

TA的得分主题

发表于 2016-11-14 11:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2016-11-14 11:10
前辈好!
抱歉!抱歉!水平不够+没注意,对不住!对不住!
重新测试了,代码准确无误。
  1. Sub 字符设置格式()
  2.    Dim c As New Collection, oPage As Page, oLine As Line, rng As Range, r%
  3.    r = InputBox("请输入字符数")
  4.    On Error Resume Next
  5.    For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  6.       For Each oLine In oPage.Rectangles(1).Lines
  7.          If r <= oLine.Range.End - oLine.Range.Start Then
  8.             n = n + 1
  9.             Set rng = oLine.Range
  10.             If Right(rng, 1) = Chr(13) Or Right(rng, 1) = Chr(11) Then
  11.                Set rng = ActiveDocument.Range(oLine.Range.End - r - 1, oLine.Range.End - (r - 1) - 1)
  12.             Else
  13.                Set rng = ActiveDocument.Range(oLine.Range.End - r, oLine.Range.End - (r - 1))
  14.             End If
  15.             c.Add rng, CStr(n)
  16.          End If
  17.       Next
  18.    Next
  19.    For i = 1 To c.Count
  20.       With c(i).Font
  21.          .Name = "黑体"
  22.          .Name = "Times New Roman"
  23.          .Size = 10
  24.          .Bold = True
  25.          .Color = wdColorRed
  26.       End With
  27.    Next
  28. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-11-14 12:30 来自手机 | 显示全部楼层
本帖最后由 duquancai 于 2016-11-14 12:33 编辑
13907933959 发表于 2016-11-14 11:10
前辈好!
抱歉!抱歉!水平不够+没注意,对不住!对不住!
重新测试了,代码准确无误。


下次发帖前,自己把需求表达清楚,仔细想想自己的需求及逻辑再发帖。不要一会儿想起了一点又增加一点,对于细小的问题,自己修改就行了。写代码还是很辛苦的!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 14:17 , Processed in 0.035099 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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