首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell (或VBA)将Word样式字体设置为默认主题字体

使用Powershell (或VBA)将Word样式字体设置为默认主题字体
EN

Stack Overflow用户
提问于 2019-07-05 22:03:29
回答 2查看 669关注 0票数 0

我正在编写一个脚本来修改Word文档中的样式。对于每种样式,我希望将字体设置为文档主题所确定的默认“正文”或“标题”样式。

将样式设置为特定字体很容易:

代码语言:javascript
复制
# Powershell
$word = New-Object -ComObject Word.Application
$word.Documents.Add()
$doc = $word.Documents | Select-Object -first 1

$doc.Styles["Normal"].Font.Name = "Calibri"

如何将样式设置为正文字体或标题字体?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-05 23:10:40

您可以访问DocumentThemeThemeFontScheme。有两个字体属性:用于标题的MajorFont和用于正文的MinorFont。其中每一个都返回一个ThemeFonts对象,该对象是拉丁字体face、msoThemeEastAsianmsoThemeComplexScriptthree language fontsmsoThemeLatin的集合。通常,根据特定的字体,其中只有一个返回值。例如,Calibri只有拉丁字体。

我假设你的主题使用拉丁字体。在VBA中,您可以执行以下操作:

代码语言:javascript
复制
doc.Styles("Normal").Font.Name = doc.DocumentTheme.ThemeFontScheme.MajorFont(msoThemeLatin).Name

以获取标题字体名称。您可以相应地调整正文字体。如果您的主题字体可能没有拉丁字体,那么您可以遍历.MajorFont返回的集合中的每一项,以检查哪个是非空字符串。

票数 1
EN

Stack Overflow用户

发布于 2020-05-31 02:39:32

因为.Minorfont(...).Name只是一个字符串,所以引用的代码将Normal样式更改为当前的正文主题字体。但是,如果您随后将正文主题字体定义更改为不同的字体外观,Normal的外观不会随之更改。要设置法线以使其跟随正文中的更改,请执行以下操作:

代码语言:javascript
复制
ActiveDocument.Styles("Normal").Font.Name = "+Body"  

(类似于“+Headings”。)Normal的.Font.Name仍然是一个特殊的字体名称,比如"Calibri“。控制链接到+Body的设置必须在其他位置...我不知道如何测试Normal是否通过静态字体设置为"Calibri“,via +Body恰好也是"Calibri”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56904563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档