将单词范围插入点移动到行尾/段落

Move word range insertion point to end of line / paragraph

我正在尝试使用 VB.net 在 word 文档中间构建带有自定义域代码的标题。字段代码的内容不重要,但应遵循以下格式:

Figure [Field code 1].[Field code 2] afterText

可以切换 [字段 1] 和 [字段 2] 以显示其字段代码。

我正在努力让插入点位于正确的位置以插入每个元素。到目前为止,这是我的代码:

' insert "Figure" text
rng.Style = CaptionStyle
rng.InsertAfter("Figure ")

' insert first field code
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
rng.Fields.Add(rng, Word.WdFieldType.wdFieldEmpty, "STYLEREF ""Heading 2"" \s", True)

' insert field code separator
rng.Expand(Word.WdUnits.wdParagraph)
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
rng.InsertAfter(".")

' insert second field code
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
rng.Fields.Add(rng, Word.WdFieldType.wdFieldEmpty, "SEQ FigureBody2 \* ARABIC \s 3", True)

' insert text after the codes
rng.Expand(Word.WdUnits.wdParagraph)
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
rng.InsertAfter("afterText")

显示的代码每次都将插入点移动到下一段的开头,而不是像我预期的那样移动到当前段落的结尾。因此,我在以下段落的开头插入了一些内容。

请帮助我将插入点移动到范围 object 所在的当前段落的末尾。我不能只移动到 wdStory 的末尾,因为这是在文档中途插入的.

您可以按照以下方式使用:

rng.Style = CaptionStyle
rng.End = rng.Paragraphs.First.Range.End - 1
rng.Text = "Figure "

  ' insert first field code
rng.Collapse (Word.WdCollapseDirection.wdCollapseEnd)
rng.Fields.Add(rng.Duplicate, Word.WdFieldType.wdFieldEmpty, "STYLEREF ""Heading 2"" \s", False)

' insert field code separator
rng.End = rng.Paragraphs.First.Range.End - 1
rng.Collapse (Word.WdCollapseDirection.wdCollapseEnd)
rng.Text = "."

' insert second field code
rng.End = rng.Paragraphs.First.Range.End - 1
rng.Collapse (Word.WdCollapseDirection.wdCollapseEnd)
rng.Fields.Add(rng, Word.WdFieldType.wdFieldEmpty, "SEQ FigureBody2 \* ARABIC \s 3", False)

' insert text after the codes
rng.End = rng.Paragraphs.First.Range.End - 1
rng.Collapse (Word.WdCollapseDirection.wdCollapseEnd)
rng.Text = " After Text"

注意:我没有用VB.net,所以不确定是不是“rng.End = rng.Paragraphs.First.Range.End - 1”在那种环境下是严格正确的。它基于 VBA.

中的工作原理