我正在编写一个脚本来修改Word文档中的样式。对于每种样式,我希望将字体设置为文档主题所确定的默认“正文”或“标题”样式。
将样式设置为特定字体很容易:
# Powershell
$word = New-Object -ComObject Word.Application
$word.Documents.Add()
$doc = $word.Documents | Select-Object -first 1
$doc.Styles["Normal"].Font.Name = "Calibri"如何将样式设置为正文字体或标题字体?
发布于 2019-07-05 23:10:40
您可以访问DocumentTheme的ThemeFontScheme。有两个字体属性:用于标题的MajorFont和用于正文的MinorFont。其中每一个都返回一个ThemeFonts对象,该对象是拉丁字体face、msoThemeEastAsian和msoThemeComplexScript的three language fonts:msoThemeLatin的集合。通常,根据特定的字体,其中只有一个返回值。例如,Calibri只有拉丁字体。
我假设你的主题使用拉丁字体。在VBA中,您可以执行以下操作:
doc.Styles("Normal").Font.Name = doc.DocumentTheme.ThemeFontScheme.MajorFont(msoThemeLatin).Name以获取标题字体名称。您可以相应地调整正文字体。如果您的主题字体可能没有拉丁字体,那么您可以遍历.MajorFont返回的集合中的每一项,以检查哪个是非空字符串。
发布于 2020-05-31 02:39:32
因为.Minorfont(...).Name只是一个字符串,所以引用的代码将Normal样式更改为当前的正文主题字体。但是,如果您随后将正文主题字体定义更改为不同的字体外观,Normal的外观不会随之更改。要设置法线以使其跟随正文中的更改,请执行以下操作:
ActiveDocument.Styles("Normal").Font.Name = "+Body" (类似于“+Headings”。)Normal的.Font.Name仍然是一个特殊的字体名称,比如"Calibri“。控制链接到+Body的设置必须在其他位置...我不知道如何测试Normal是否通过静态字体设置为"Calibri“,via +Body恰好也是"Calibri”。
https://stackoverflow.com/questions/56904563
复制相似问题