ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

vba有没有把某个段落的所有格式写入一个数组的方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-23 17:12 来自手机 | 显示全部楼层 |阅读模式
请问,在word里,有没有把某个段落的所有格式写入一个数组的方法,请大家指点一下。

TA的精华主题

TA的得分主题

发表于 2019-3-23 17:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
代表段落的所有格式。

使用 ParagraphFormat 对象
使用 Format 属性可返回一个或多个段落的 ParagraphFormat 对象。ParagraphFormat 属性返回所选内容、区域、样式、Find 对象或 Replacement 对象的 ParagraphFormat 对象。下列示例将活动文档中的第三段居中。

ActiveDocument.Paragraphs(3).Format.Alignment = _
    wdAlignParagraphCenter
下列示例查找所选内容之后的下一个两倍行距的段落。

With Selection.Find
    .ClearFormatting
    .ParagraphFormat.LineSpacingRule = wdLineSpaceDouble
    .Text = ""
    .Forward = True
    .Wrap = wdFindContinue
End With
Selection.Find.Execute
说明
可以使用 Visual Basic 的 New 关键词新建单独的 ParagraphFormat 对象。下列示例创建一个 ParagraphFormat 对象,为其设置部分格式属性,然后将其所有属性应用于活动文档中的第一个段落。

Dim myParaF As New ParagraphFormat
myParaF.Alignment = wdAlignParagraphCenter
myParaF.Borders.Enable = True
ActiveDocument.Paragraphs(1).Format = myParaF

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-23 19:17 来自手机 | 显示全部楼层
jiangxiaoyun 发表于 2019-3-23 17:37
代表段落的所有格式。

使用 ParagraphFormat 对象

谢谢帮忙,但我想要的是某个段落的所有格式,把它写入某个变量里面,例如myparaf=ActiveDocument.Paragraphs(1).Format这种情况,(当然,这种写法好像实现不了),请问,有什么好方法吗?

TA的精华主题

TA的得分主题

发表于 2019-3-23 21:03 | 显示全部楼层
    楼主,格式包括字体格式和段落格式。具体还有内置样式自带格式,用户手动设置格式。只要改动一个元素,格式就变为新的格式。所以,除非,想把某个段落按字符逐个进行循环,否则难以记录该段落所有格式。
    楼主,这样做有什么目的呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-24 15:42 来自手机 | 显示全部楼层
413191246se 发表于 2019-3-23 21:03
楼主,格式包括字体格式和段落格式。具体还有内置样式自带格式,用户手动设置格式。只要改动一个元素, ...

谢谢回答。我在教学中有时需要考察学生会不会使用格式刷把一个段落的格式变成和另一个段落的格式一样,不知你有没有简单的方法。

TA的精华主题

TA的得分主题

发表于 2019-3-24 21:29 | 显示全部楼层
ActiveDocument.Paragraphs(2).ParagraphFormat.LeftIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.RightIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.SpaceBefore
ActiveDocument.Paragraphs(2).ParagraphFormat.SpaceBeforeAuto
ActiveDocument.Paragraphs(2).ParagraphFormat.SpaceAfter
ActiveDocument.Paragraphs(2).ParagraphFormat.SpaceAfterAuto
ActiveDocument.Paragraphs(2).ParagraphFormat.LineSpacingRule
ActiveDocument.Paragraphs(2).ParagraphFormat.Alignment
ActiveDocument.Paragraphs(2).ParagraphFormat.WidowControl
ActiveDocument.Paragraphs(2).ParagraphFormat.KeepWithNext
ActiveDocument.Paragraphs(2).ParagraphFormat.KeepTogether
ActiveDocument.Paragraphs(2).ParagraphFormat.PageBreakBefore
ActiveDocument.Paragraphs(2).ParagraphFormat.NoLineNumber
ActiveDocument.Paragraphs(2).ParagraphFormat.Hyphenation
ActiveDocument.Paragraphs(2).ParagraphFormat.FirstLineIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.OutlineLevel
ActiveDocument.Paragraphs(2).ParagraphFormat.CharacterUnitLeftIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.CharacterUnitRightIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.CharacterUnitFirstLineIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.LineUnitBefore
ActiveDocument.Paragraphs(2).ParagraphFormat.LineUnitAfter
ActiveDocument.Paragraphs(2).ParagraphFormat.AutoAdjustRightIndent
ActiveDocument.Paragraphs(2).ParagraphFormat.DisableLineHeightGrid
ActiveDocument.Paragraphs(2).ParagraphFormat.FarEastLineBreakControl
ActiveDocument.Paragraphs(2).ParagraphFormat.WordWrap
ActiveDocument.Paragraphs(2).ParagraphFormat.HangingPunctuation
ActiveDocument.Paragraphs(2).ParagraphFormat.HalfWidthPunctuationOnTopOfLine
ActiveDocument.Paragraphs(2).ParagraphFormat.AddSpaceBetweenFarEastAndAlpha
ActiveDocument.Paragraphs(2).ParagraphFormat.AddSpaceBetweenFarEastAndDigit
ActiveDocument.Paragraphs(2).ParagraphFormat.BaseLineAlignment
自己玩吧

TA的精华主题

TA的得分主题

发表于 2019-3-25 00:35 | 显示全部楼层
    楼主,你好!——我试验发现:使用“格式刷”把某个段落的格式运用于另一个段落上,样式会复制,但是格式,取决于第一个中文字符,和第一个西文字符,后面再有什么格式已经没有用了。另外,你怎么判断你的学生是使用了“格式刷”,而不是批量设置的格式的呢?用 VBA 判断恐怕不容易。
    一般来说,用“格式刷”不必多想,先选定某个段落,再点击一下格式刷图标,再选定另一个段落即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-25 15:35 | 显示全部楼层
daibao88 发表于 2019-3-24 21:29
ActiveDocument.Paragraphs(2).ParagraphFormat.LeftIndent
ActiveDocument.Paragraphs(2).ParagraphForma ...

谢谢回答,不过这种方法我就是嫌这种方法太麻烦了,所以来寻求大家的帮助

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-25 15:36 | 显示全部楼层
413191246se 发表于 2019-3-25 00:35
楼主,你好!——我试验发现:使用“格式刷”把某个段落的格式运用于另一个段落上,样式会复制,但是格 ...

谢谢帮忙,虽然问题没有完全解决,但是,我还是从你那里学到了许多新东西。顺便想请教一下,有简单比对两段样式的方法吗?

TA的精华主题

TA的得分主题

发表于 2019-3-25 16:50 | 显示全部楼层
pujizhongxue 发表于 2019-3-25 15:36
谢谢帮忙,虽然问题没有完全解决,但是,我还是从你那里学到了许多新东西。顺便想请教一下,有简单比对两 ...

样式 是可以对比的
但我猜你肯定不是指的样式
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 10:57 , Processed in 0.027541 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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