我正逐字经历文字。
有了这个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”,而不是将其插入检测位置。
我做错了什么?
提前致谢!
答案 0 :(得分:0)
Word的Character对象也是一个Range对象。所以以下内容应该有效:
car.InsertParagraphAfter
通常,在自动化Word时应避免使用Selection对象。有一些事情是必要的,但是将文本写入文档并不是其中之一......
相反,如果段落标记应在目标Range(car)之前插入多个字符,则可以使用MoveStart方法扩展Range的起点:
car.MoveStart wdCharacter, -n
car.InsertParagraphBefore
其中n是您想要倒退的字符数。