簡體   English   中英

從Excel VBA用Word編寫項目符號列表

[英]Writing bullet list in Word, from Excel VBA

我將單詞添加到Excel中的多行String 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

Word具有可以執行此操作的自動套用格式功能。 自動套用格式可以應用於整個文檔或范圍。 我建議您將內容寫入Range對象,而不是Selection對象,以便可以確定受影響的內容。

自動套用格式可以做很多事情,因此有必要指定您想要和不想要的東西。 我在下面僅包括了項目符號列表選項。 可以想象,您可能想關閉其他選項。 您可以在Word語言參考中找到整個列表。 請注意,有“自動套用格式”以及“ 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM