假设我想在文档末尾添加一些文本,并立即将其作为Range对象访问,以便可以设置它的一些属性而不影响前面的文本。理想情况下,
因此,我设计了一个简单的解决方法。用伪代码(实际上是Delphi代码,但我希望这不会阻止VBA答案)来表示,我的操作如下:
据我理解,使用insertNode方法似乎可以在现有范围的末尾构建一个新的范围(不像在现有范围上调用Collapse方法)。我已经尝试了一些简单的测试用例,效果很好。但这让我想知道是否有更直接的方法将范围添加到文档并获取对其的引用?
附注:我应该更清楚地表明,我正在尝试在没有使用Selection对象的情况下完成此操作(出于各种原因,包括每次只能有一个Selection对象)。
Range.InsertAfter
方法将返回一个Range对象,这对于此非常完美,但实际上并不是这样。
Word肯定知道插入InsertAfter
后定义的范围,但在表面上,我需要根据插入文本的长度“事后”计算它,或以其他方式计算。因此,我设计了一个简单的解决方法。用伪代码(实际上是Delphi代码,但我希望这不会阻止VBA答案)来表示,我的操作如下:
ARange := Document.Range
ARange.Text := 'AAA'
AEnd := ARange.End - 1 // AEnd is an integer
ARange.SetRange(AEnd, AEnd)
ARange.Text := 'XXX'
ARange.Bold := True
看起来我可以通过重复第二个代码块的方式无限地在文档末尾添加文本块。
这行代码
ARange.SetRange(AEnd, AEnd)
据我理解,使用insertNode方法似乎可以在现有范围的末尾构建一个新的范围(不像在现有范围上调用Collapse方法)。我已经尝试了一些简单的测试用例,效果很好。但这让我想知道是否有更直接的方法将范围添加到文档并获取对其的引用?
附注:我应该更清楚地表明,我正在尝试在没有使用Selection对象的情况下完成此操作(出于各种原因,包括每次只能有一个Selection对象)。