wdGoToLine找的行不是段落,如果一个段落太长,就会有多行,wdGoToLine找的就是这样的行,与眼睛看到的行一致$word=ObjCreate("word.application")
$word.visible=1
$doc=$word.documents.open("Z:\气场.doc")
With $doc.application.selection
.goto(1,1,3) ;从开头去到第三页,第一个参数表示找页wdGoToPage,第二个参数表示找的方向是第一个wdGoToFirst
.goto(3,2,4) ;继续向下去到第5行,第一个参数表示找行wdGoToLine,第二个参数表示继续向后wdGoToNext,相对位置修改了一下,之前已经在第1行了,所以第5行应该是向下4行
.endkey(5,1) ;选中整行
If Stringlen(.range.text)>8 Then ;判断行字符是否大于8个
.homekey(5) ;大于8个时先回到行首
.moveright(1,8) ;向右移动8个字符,第一个参数表示移动的单位是字符,第二个参数表示移动数量
Else
.endkey(5) ;跳到行尾
EndIf
EndWith
With $doc.application.selection.range
.text="我在这里"
.font.colorindex=6
.font.size=28
.font.bold=True
EndWith
MsgBox(0,"","效果对了没?")
$doc.saved=True
$doc.close
$word.quit
$doc=Null
$word=Null
代码修改了一下,加了些判断,你那个测试出错的原因应该是这样的,行数我多算了一行,由于用的moveright,当你的一行只有一个换行符时,moveright相当于向下移动,结果就移动多了,加了个判断来判断当前行字符数是否够8个,不够的话只移到行尾 |