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