ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-11-6 11:57 | 显示全部楼层
本帖最后由 413191246se 于 2016-11-6 13:04 编辑

.......................

TA的精华主题

TA的得分主题

发表于 2016-11-6 14:14 | 显示全部楼层
139:字体(Name)/字号(Size)/字形(Bold加粗/Italic斜体)/颜色(wdColorRed红色)这些参数可以通过录制宏得到,请试试下面的代码:
  1. Sub aaaa段落首字符格式设置()
  2.     Dim i As Paragraph, x As Long, y As Long
  3.     For Each i In ActiveDocument.Paragraphs
  4.         i.Range.Select
  5.         Do
  6.             y = Selection.Paragraphs(1).Range.ComputeStatistics(statistic:=wdStatisticLines)
  7.             Selection.HomeKey Unit:=wdLine
  8.             Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
  9.             With Selection.Font
  10.                 .Name = "黑体" '(中文字体)
  11.                 .Name = "Times New Roman" '(西文字体)
  12.                 .Size = 16 '三号(字号)
  13.                 .Bold = True '加粗(字形)
  14.                 .Italic = True '斜体(字形)
  15.                 .Color = wdColorRed '红色(颜色)
  16.             End With
  17.             Selection.MoveDown Unit:=wdLine, Count:=1
  18.             x = x + 1
  19.         Loop Until x = y
  20.         x = 0
  21.     Next
  22. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-7 08:58 | 显示全部楼层
本帖最后由 13907933959 于 2016-11-7 10:24 编辑
413191246se 发表于 2016-11-6 14:14
139:字体(Name)/字号(Size)/字形(Bold加粗/Italic斜体)/颜色(wdColorRed红色)这些参数可以通过录 ...
师傅好!
好的。
代码刚测试了,精准无误。感谢师傅!!!

TA的精华主题

TA的得分主题

发表于 2016-11-9 15:32 | 显示全部楼层
13907933959 发表于 2016-11-7 08:58
师傅好!好的。
代码刚测试了,精准无误。感谢师傅!!!

Word 2003及其以后版本中,有“页”和“行”对象的:
  1. Sub 行首一个字符设置格式()
  2.     Dim oPage As Page, oLine As Line
  3.     For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  4.         For Each oLine In oPage.Rectangles(1).Lines
  5.             With ActiveDocument.Range(oLine.Range.Start, oLine.Range.Start + 1).Font
  6.                 .Bold = True
  7.                 .Italic = True
  8.                 .Color = RGB(255, 0, 0)
  9.             End With
  10.         Next
  11.     Next
  12. End Sub
复制代码
备注:引用守柔老大的原话:“Word 2003及其以后版本中,是有“页”和“行”对象的,即“Page"和“Line“,它们也可以与Range对象关联起来,但尽量不要使用这些对象,如果程序要通过页和行来解决问题时,应该检讨一下程序的设计思路是否存在问题,在使用“页”特别是“行”对象时,请慎用。”

TA的精华主题

TA的得分主题

发表于 2016-11-9 17:00 | 显示全部楼层
13907933959 发表于 2016-11-7 08:58
师傅好!好的。
代码刚测试了,精准无误。感谢师傅!!!

由于字号增大,可能会引起原文档中行数会增加,反之可能引起行数会减少,总之行数变化了,那么你设置的“原文档”的行首一个字符就会变化的。那么怎么保证设置的原来行首一个字符始终就是设置的同一个字字符呢?那么用下面的程序可以解决:
  1. Sub 行首一个字符设置格式()
  2.     Dim c As New Collection
  3.     Dim oPage As Page, oLine As Line, rng As Range
  4.     For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  5.         For Each oLine In oPage.Rectangles(1).Lines
  6.             n = n + 1
  7.             Set rng = ActiveDocument.Range(oLine.Range.Start, oLine.Range.Start + 1)
  8.             c.Add rng, CStr(n)
  9.         Next
  10.     Next
  11.     For i = 1 To c.Count
  12.         With c(i).Font
  13.             .Name = "黑体"
  14.             .Name = "Times New Roman"
  15.             .Size = 60 '设置的字号比较大,是为了改变原来文档的行数,以便观察!
  16.             .Bold = True
  17.             .Italic = True
  18.             .Color = wdColorRed
  19.         End With
  20.     Next
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-9 17:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-11-9 15:32
Word 2003及其以后版本中,有“页”和“行”对象的:
备注:引用守柔老大的原话:“Word 2003及其以后版 ...

前辈好!
感谢前辈多次出手相助!
经测试、可精准替换。
感谢前辈教诲!
谢谢!

TA的精华主题

TA的得分主题

发表于 2016-11-9 17:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 duquancai 于 2016-11-9 17:23 编辑
13907933959 发表于 2016-11-7 08:58
师傅好!好的。
代码刚测试了,精准无误。感谢师傅!!!

当然也可以用字典法,程序如下:
  1. Sub 行首一个字符设置格式()
  2.     Set d = CreateObject("Scripting.Dictionary")
  3.     Dim oPage As Page, oLine As Line, rng As Range
  4.     For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  5.         For Each oLine In oPage.Rectangles(1).Lines
  6.             n = n + 1
  7.             Set d(n) = ActiveDocument.Range(oLine.Range.Start, oLine.Range.Start + 1)
  8.         Next
  9.     Next
  10.     For Each ite In d.items
  11.         With ite.Font
  12.             .Name = "黑体"
  13.             .Name = "Times New Roman"
  14.             .Size = 60 '设置的字号比较大,是为了改变原来文档的行数,以便观察!
  15.             .Bold = True
  16.             .Italic = True
  17.             .Color = wdColorRed
  18.         End With
  19.     Next
  20. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-10 07:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-11-10 07:55 编辑
duquancai 发表于 2016-11-9 17:00
由于字号增大,可能会引起原文档中行数会增加,反之可能引起行数会减少,总之行数变化了,那么你设置的“ ...
前辈好!
谢谢!谢谢!
前辈、您是论坛上大家公认的高手,给的东西总是简洁高效,令人望尘莫及!!!
前辈、能否再求您在上面的代码中,加一个可指定自左往右任意一字符位数的选项框,通过手工修改选项框的数字,如可指定替换文档内每一行的第1个字符、第2个字符、第3个字符、……直到满行的最后一个字的格式(字体、字号、字形、颜色)。
拜谢前辈!

TA的精华主题

TA的得分主题

发表于 2016-11-10 09:31 | 显示全部楼层
13907933959 发表于 2016-11-10 07:48
前辈好!谢谢!谢谢!前辈、您是论坛上大家公认的高手,给的东西总是简洁高效,令人望尘莫及!!!
前辈、 ...
  1. Sub 字符设置格式()
  2.     Dim oPage As Page, oLine As Line, rng As Range, r%
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     On Error Resume Next
  5.     r = InputBox("请输入字符数")
  6.     For Each oPage In ActiveDocument.ActiveWindow.ActivePane.Pages
  7.         For Each oLine In oPage.Rectangles(1).Lines
  8.             n = n + 1
  9.             y = oLine.Range.Start
  10.             Set d(n) = ActiveDocument.Range(oLine.Range.Start, oLine.Range.Start + r)
  11.         Next
  12.     Next
  13.     For Each ite In d.items
  14.         With ite.Font
  15.             .Name = "黑体"
  16.             .Name = "Times New Roman"
  17.             .Bold = True
  18.             .Color = wdColorRed
  19.         End With
  20.     Next
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-10 10:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2016-11-10 10:28 编辑

前辈好!
抱歉!抱歉!怪我描述不准、让您产生误判,请前辈原谅!

加一个可指定自左往右任意一字符位数的选项框,通过手工修改选项框的数字,如可指定替换文档内每一行的第1个字符、第2个字符、第3个字符、……直到满行的最后一个字的格式(字体、字号、字形、颜色)。

我的意思是:每行只改变一个字符的格式(字体、字号、字形、颜色)。假如在选项框内手工选定了8,即只替换文档内每一行的第8个字符的格式(字体、字号、字形、颜色)。

求前辈再帮忙!谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 14:16 , Processed in 0.025667 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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