从Excel VBA中在Word中编写项目符号列表

时间:2018-06-13 13:17:19

标签: excel vba ms-word

我在Excel中向多行字符串strEvap添加单词。有些行以子弹点开头(子弹角色•)。示例字符串:

3 Evaporateurs
Évaporateur de type mural, modèle --, à installer et raccorder au condenseur, complet avec :
• Alimentation électrique par l’unité de condensation via un câble 14/3+Gnd
• Moteurs ECM

我的字符串完成后,我创建一个Word文档并使用以下代码将字符串写入Word文档:

Function FnWriteToWordDoc(strEvap As String, strCond As String)
   Dim objWord
   Dim objDoc
   Dim objSelection

   Set objWord = CreateObject("Word.Application")
   Set objDoc = objWord.Documents.Add
   objWord.Visible = True
   Set objSelection = objWord.Selection
   objSelection.TypeText (strEvap)
End Function

这很好用。此时,我有一个Word文档,其中的字符串与我上面的示例相同。

我的问题:

如何格式化以子弹开头的行,以便将其识别为Word中项目符号列表的一部分?理想情况下,它会在我写入文档时完成,但我不介意它是否会覆盖所有行,并且如果适用于最后,则将它们作为项目符号列表。

到目前为止,我有以下代码将选定的行转换为项目符号列表。它可以单独工作,但必须使用Word文档,而不是我的Excel代码。

Sub RendreBulletDansWord()
    Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
        ListGalleries(wdBulletGallery).ListTemplates(1), ContinuePreviousList:= _
        False, ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:= _
        wdWord10ListBehavior
End Sub

1 个答案:

答案 0 :(得分:2)

Word具有可以执行此操作的自动套用格式功能。自动套用格式可应用于整个文档或范围。我建议您将内容写入Range对象,而不是选择,这样您就可以确定受影响的内容。

自动套用格式可以做很多事情,所以有必要指定你想要和不想要的东西。我在下面只列出了项目符号列表选项。可以想象,您可能希望关闭其他选项。您可以在Word语言参考中找到整个列表。请注意,有AutoFormat和AutoFormatAsYouType设置。您不必担心后者,但请注意,因为某些AutoFormat设置在AutoFormatAsYouType之后按字母顺序列出。

Dim rng as Word.Range
Set rng = objWord.Selection.Range
rng.Text = strEvap
objWord.Options.AutoFormatApplyBulletedLists = True
rng.AutoFormat

*虽然,如果使用.TypeText,可以想象它可以使用AutoFormatAsYouType设置。但我个人更喜欢使用Selection和TypeText。