将单词范围插入点移动到行尾/段落
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.
中的工作原理
我正在尝试使用 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.
中的工作原理