使用VBA

时间:2019-06-07 18:01:23

标签: vba ms-word word-vba

我正在从第三方系统中导入纯文本文档,这些文档是长编号的说明列表。我们将这些文档放入Word中,进行更改,然后将其上传回此第三方系统。但是,当我们进行更改时,这会导致我们所有列表的排列顺序混乱,因此我们必须重新输入并对其重新编号。我想使用VBA进行此操作,因为我们有成百上千的文档需要进行这些更改。

有人对此有什么建议吗?我正在考虑单步执行每个段落(每个指令是一个段落),确定哪些以数字开头,因此需要重新标记(某些段落没有编号步骤),删除现有数字,然后用下一个数字替换该删除的数字按顺序。

我找到了一些可能会使用的带有代码块的站点,但是想看看我是否正在按照正确的方式进行操作,或者是否应该尝试其他策略,例如将每个段落更改为自动编号我逐步浏览这些段落。

2 个答案:

答案 0 :(得分:1)

对于可能选择的一系列简单的带编号段落,可以使用如下代码:

Sub Demo()
With Selection.Range.ListFormat
  .ApplyNumberDefault
  .ApplyListTemplate ListTemplate:=ListGalleries(wdNumberGallery).ListTemplates(1), ContinuePreviousList:=True
End With
End Sub

请注意,段落缩进可能会更改,并且这样的代码还将对所选内容中所有未编号的段落进行编号,因此请谨慎选择。

答案 1 :(得分:0)

这是一个完美的切换

Sub BulletNumeric()
'
' BulletNumeric Macro
'
'
Dim lfTemp As ListFormat
Dim intContinue As Integer
 
If Selection.Range.ListFormat.ListString = "1." Then
    Selection.Style = "Bullet Numbered"
Else
    
    Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
        ListGalleries(wdOutlineNumberGallery).ListTemplates(7), _
        ContinuePreviousList:=False, ApplyTo:=wdListApplyToWholeList, _
        DefaultListBehavior:=wdWord10ListBehavior

End If

End Sub

第一次单击它,它将得到1。下次,它将简单地从以前的一个继续。