2017-07-19 106 views
0

我试图在Word文档中的标题内插入字段,而不是在它们之前或之后。这是准备Word文件导入到Madcap Flare,它允许在专用Word字段中指定文件名。下面的代码不起作用,因为该字段是在标题开始之前附加的,所以需要将其嵌入到其中。我怎样才能做到这一点。如何在标题内插入字段

Sub prepareDocForImport() 
    Dim headingText As String ' 
     With Selection.Find 
     .ClearFormatting 
     .Wrap = wdFindContinue 
     .Forward = True 
     .Format = True 
     .MatchWildcards = False 
     .Text = "" 
     .Style = ActiveDocument.Styles("Heading 1 ") 
     .Execute 
     While .Found 
      headingText = Selection.Range.Text 
      headingText = Replace(headingText , " ", "_") 
      headingText = LCase(headingText) 
      Selection.Collapse Direction:=wdCollapseStart 
      Set myField = ActiveDocument.Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty, Text:="PRIVATE:MADCAP:FILENAME<" & headingText & ">") 
      .Execute 

     Wend 
    End With 
End Sub 

回答

0

尝试将光标移动到标题单词中。

我还添加了一行以确保搜索从文档的开始处开始。

Sub prepareDocForImport() 

    Dim headingText As String 
    Dim myfield As Field 

    'Moving to beginning of doc in case a different starting point is selected 
    Selection.HomeKey wdStory 

     With Selection.Find 
     .ClearFormatting 
     .Wrap = wdFindContinue 
     .Forward = True 
     .Format = True 
     .MatchWildcards = False 
     .Text = "" 
     .Style = ActiveDocument.Styles("Heading 1 ") 
     .Execute 

     While .Found 

      headingText = Selection.Range.Text 
      headingText = Replace(headingText, " ", "_") 
      headingText = LCase(headingText) 
      Selection.Collapse Direction:=wdCollapseStart 

      'Move seleection one character into the header text 
      Selection.MoveRight Count:=1 

      Set myfield = ActiveDocument.Fields.Add(Range:=Selection.Range, _ 
                Type:=wdFieldEmpty, _ 
                Text:="PRIVATE:MADCAP:FILENAME<" & headingText & ">", _ 
                PreserveFormatting:=True) 
      .Execute 

     Wend 
    End With 
End Sub