如何将Word字体名称传入Variant变量以实现字体示例宏?
修复Word VBA宏:获取所有可用字体并生成示例段落
问题原因
Application.FontNames 是Word的FontNames集合对象,并非直接可赋值的数组,因此直接用 fontList = Application.FontNames 会失败。需要先遍历集合,将每个字体名称存入数组。
修复后的完整宏代码
Sub CreateModernFontExamples() Dim fontList() As String Dim i As Integer Dim MyText As String Dim fontCount As Integer ' 获取可用字体总数并初始化数组 fontCount = Application.FontNames.Count ReDim fontList(1 To fontCount) ' 遍历FontNames集合,将字体名称存入数组 For i = 1 To fontCount fontList(i) = Application.FontNames(i) Next i MyText = "英镑符号是'£'。敏捷的棕狐跳过懒狗——这句经典句子展示了字母表的所有字母。数字序列可以试试1234567890,包含全部十个数字。还可以组合成:'狐狸在下午3点跳过围栏',在一句话中同时展示字母和数字。" ' 为每种字体创建新段落 For i = LBound(fontList) To UBound(fontList) With ActiveDocument.Content.Paragraphs.Add .Range.Text = MyText & "(字体:" & fontList(i) & ")" .Range.Font.Name = fontList(i) .Range.Font.Size = 12 ' 可按需调整字号 End With Next i End Sub
关键修改点
- 将
fontList定义为字符串数组Dim fontList() As String,而非Variant - 通过
Application.FontNames.Count获取字体总数,用ReDim初始化数组大小 - 循环遍历FontNames集合,逐个将字体名称存入数组
- 优化了示例文本的中文表述,使内容更贴合中文场景
内容的提问来源于stack exchange,提问作者Nivek
相关产品推荐
相关产品推荐

