Excel VBA生成Word文档:如何像开关粗体一样切换项目符号
Excel VBA生成Word报表:实现项目符号开关功能
背景
我通过Excel VBA基于工作表数据生成Word报表,想要像功能区按钮开关粗体那样,一键开启/关闭项目符号列表来输入内容。原本以为能像设置.Font.Bold = True一样简单实现,但查了文档和搜索都没找到合适方法。
录制的冗余宏代码
我在Word中录制宏得到了以下代码:
Sub testBullet() With ListGalleries(wdBulletGallery).ListTemplates(1).ListLevels(1) .NumberFormat = ChrW(61623) .TrailingCharacter = wdTrailingTab .NumberStyle = wdListNumberStyleBullet .NumberPosition = InchesToPoints(0.25) .Alignment = wdListLevelAlignLeft .TextPosition = InchesToPoints(0.5) .TabPosition = wdUndefined .ResetOnHigher = 0 .StartAt = 1 With .Font .Bold = wdUndefined .Italic = wdUndefined .StrikeThrough = wdUndefined .Subscript = wdUndefined .Superscript = wdUndefined .Shadow = wdUndefined .Outline = wdUndefined .Emboss = wdUndefined .Engrave = wdUndefined .AllCaps = wdUndefined .Hidden = wdUndefined .Underline = wdUndefined .Color = wdUndefined .Size = wdUndefined .Animation = wdUndefined .DoubleStrikeThrough = wdUndefined .Name = "Symbol" End With .LinkedStyle = "" End With ListGalleries(wdBulletGallery).ListTemplates(1).Name = "" Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _ ListGalleries(wdBulletGallery).ListTemplates(1), ContinuePreviousList:= _ False, ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:= _ wdWord10ListBehavior Selection.TypeText Text:="Now I'm typing bulleted text" Selection.TypeParagraph Selection.TypeText Text:="time to leave" Selection.TypeParagraph Selection.Range.ListFormat.RemoveNumbers NumberType:=wdNumberParagraph Selection.TypeText Text:="no longer bulleted" Selection.TypeParagraph End Sub
晚绑定限制
我的代码开头使用了晚绑定:
Dim objWord As Object Set objWord = CreateObject("Word.Application")
很多Word命令需要添加objWord.前缀,且需将枚举名称替换为数字(例如用ColorIndex = 6替代wdRed),但不确定录制宏中哪些是必要代码。
核心疑问
- 录制的宏中哪些内容可以删减?核心代码是什么?
- 有没有类似设置字体格式的开关式方法来启用/关闭项目符号?我不想处理文本范围逻辑,希望实现人工逐行输入时的切换效果(文档段落长度会随Excel输入变化)。
内容的提问来源于stack exchange,提问作者truck
相关产品推荐
相关产品推荐

