在按字符迭代时插入文本

时间:2018-01-17 20:39:48

标签: vba ms-word

我正逐字经历文字。

有了这个Sub。

相信我的确有效。

my $i = 0;
s{<tag>(.*?)</tag>}{
   my $entity = sprintf("&CITE%03d;", $i++);
   $cite{$entity} = $1;
   $entity
}eg;

我的问题是我想在检测到模式时插入文本。

这种方式不起作用

Sub Recorrida2()

prepararVariables

   For Each parrf In ActiveDocument.Paragraphs
        DoEvents
        Dim c As Integer
        c = 1
               For Each car In parrf.Range.Characters
                     If cargaAPatron(car) Then
                     MsgBox "lleno ok"
                     Selection.TypeText ("ENTER")
                     lleno = 1
                     End If

                Next 'parrafo
Next

End Sub

因为它在文本的开头插入“ENTER”,而不是将其插入检测位置。

我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Word的Character对象也是一个Range对象。所以以下内容应该有效:

 car.InsertParagraphAfter

通常,在自动化Word时应避免使用Selection对象。有一些事情是必要的,但是将文本写入文档并不是其中之一......

相反,如果段落标记应在目标Range(car)之前插入多个字符,则可以使用MoveStart方法扩展Range的起点:

 car.MoveStart wdCharacter, -n
 car.InsertParagraphBefore

其中n是您想要倒退的字符数。