我需要创建一个宏,将一些自动编号的列表转换为纯文本。我发现下面的宏将完美地完成整个文档,但我希望保持文档标题等仍然自动编号,只需将文档中的编号要求列表更改为纯文本。
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
有什么建议吗? (我会继续自己思考,但我确信整个文档选项很简单,必须有一个简单的方法来做到这一点!)
答案 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