通过vba在word中的每个点之前插入标题

通过vba在word中的每个点之前插入标题,vba,ms-word,Vba,Ms Word,有一份文件说明如下: 标题简介 我有一个关于堆栈溢出的帐户 1.1哈哈 1.2嗨 我用它来发布问题 我用它来回答问题 我想将其转换为: 标题简介-1 我有一个关于堆栈溢出的帐户 1.1哈哈 1.2 hi 标题简介-2 我用它来发布问题 标题简介-3 我用它来回答问题 我想知道如何通过宏迭代编号列表集合来实现此目的。您可以这样迭代: Sub iterateNumberedList() Dim oList As Paragraph Selection.GoTo What:=wdGoTo

有一份文件说明如下:

标题简介
  • 我有一个关于堆栈溢出的帐户
    1.1哈哈
    1.2嗨
  • 我用它来发布问题
  • 我用它来回答问题
  • 我想将其转换为:

    标题简介-1
  • 我有一个关于堆栈溢出的帐户
    1.1哈哈
    1.2 hi
  • 标题简介-2
  • 我用它来发布问题
  • 标题简介-3
  • 我用它来回答问题

  • 我想知道如何通过宏迭代编号列表集合来实现此目的。

    您可以这样迭代:

    Sub iterateNumberedList()
       Dim oList As Paragraph
    
       Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst ' go to beginning of doc
    
       ' for each paragraph
       For Each oList In ActiveDocument.Paragraphs
    
          ' is it a numbered list of level 1 ?
          If oList.Range.ListFormat.ListType = 4 And oList.Range.ListFormat.ListLevelNumber = 1 Then
    
             ' move one line above list item
             Selection.MoveUp unit:=wdLine, Count:=1
    
             ' insert heading text
             Selection.Range.Text = "Heading " & vbCr
    
             ' format heading text with style 'Heading 1'
             Selection.Range.Style = "Heading 1"
    
             ' move down two paragraphs
             Selection.MoveDown unit:=wdParagraph, Count:=2
          End If
       Next
    End Sub
    

    这段代码只是为了让你知道该怎么做。这并不是你问题的最终解决办法。

    Thnaks。这是有道理的!但我无法在循环中使用选择对象。选择的位置不会随着循环的进行而改变。我正在if块中写入Selection.TypeText(“heya”),但是文本一直被插入到光标所在的第一个位置。很抱歉这个愚蠢的问题,但我是vba新手。我无法找到这种行为的根本原因。你能帮我照几张光吗!我从你的答案中了解到了选择对象的概念,我假设它在开始时默认随循环而改变。你为我节省了很多时间:D