将选定的自动编号列表更改为单词中的纯文本

时间:2014-04-28 09:34:17

标签: vba ms-word ms-office

我需要创建一个宏,将一些自动编号的列表转换为纯文本。我发现下面的宏将完美地完成整个文档,但我希望保持文档标题等仍然自动编号,只需将文档中的编号要求列表更改为纯文本。

Sub Auto_Format_convert_list_numbers()
'
' convert_list_numbers Macro
' Macro created 10/8/08 by WJ Shack
'
ActiveDocument.ConvertNumbersToText

End Sub

我对这个主题的看法或许我可以只将它做到我选择的列表。 (当我点击其中一个编号的项目时,它会突出显示列表中的其他项目)我尝试了以下但是它出现了错误

Sub Auto_Format_convert_list_numbers()
'
' convert_list_numbers Macro
' Macro created 10/8/08 by WJ Shack
'
Selection.ConvertNumbersToText

End Sub

有什么建议吗? (我会继续自己思考,但我确信整个文档选项很简单,必须有一个简单的方法来做到这一点!)

3 个答案:

答案 0 :(得分:2)

ConvertNumbersToText方法对Selection无效,但适用于List类,因此此子将转换ActiveDocument中的每个列表:

Sub Auto_Format_convert_list_numbers()

Set RE = CreateObject("vbscript.regexp")

'Change your pattern here
RE.Pattern = "[A-Z][A-z][0-9][0-9][-][0-9]"

For Each Lst In ActiveDocument.Lists
Set Match = RE.Execute(Lst.Range.Text)
If Match.Count Then
  Lst.ConvertNumbersToText
End If
Next    

End Sub

答案 1 :(得分:2)

如果您只想将标题转换为文本,则会对整个文档执行此操作:

Sub ConvertHeadingNumbersToText()
    Dim paraCount As Integer
    paraCount = ActiveDocument.Paragraphs.Count
    Dim text As String
    Dim para As Paragraph
    ' process the headings bottoms up to preserve their original numbers
    For i = paraCount To 1 Step -1
        Set para = ActiveDocument.Paragraphs(i)
        If InStr(1, para.Style, "Heading") Then
            para.Range.ListFormat.ConvertNumbersToText
            text = para.Range.text   '  add a Watch for text so you can see progress in the Watches window
        End If
    Next i
End Sub

答案 2 :(得分:0)

今天,我遇到了与OP完全相同的问题,并提出了一个简单的解决方案:

Sub Selection_Convert_List_Numbers()
    Selection.Range.ListFormat.ConvertNumbersToText
End Sub