找回密码
 加入
搜索
查看: 6310|回复: 9

[系统综合] 如何在WORD文档的指定页指定行的指定位置写入文本?(已解决)

  [复制链接]
发表于 2013-1-23 18:39:35 | 显示全部楼层 |阅读模式
本帖最后由 gzh888666 于 2013-1-24 15:27 编辑

如何在WORD文档的指定页指定行的指定位置写入文本?
比如在WORD文档的第3页第5行8列写入一段话,
还有如何删除指定页、行、列的范围内的文本?
求教大神!感谢了!
发表于 2013-1-23 19:18:37 | 显示全部楼层
看MS的VBA吧…
 楼主| 发表于 2013-1-23 22:51:49 | 显示全部楼层
回复 2# annybaby

的确有学习VBA的计划,现在工作中很多的东西都涉及到VBA,比如打印等等!来论坛提问的确是想快速的解决问题而已,谢谢建议!
发表于 2013-1-23 23:08:31 | 显示全部楼层
回复 3# gzh888666

取自官方的CHM格式的关于WORD的VBA大全,缺点是会弹出脚本错误的提示,不过不影响阅读,有需要的拿去吧`~
PS:2003版的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 贡献 +5 收起 理由
gzh888666 + 10 + 5 感谢提供!

查看全部评分

发表于 2013-1-23 23:11:18 | 显示全部楼层
$word=ObjCreate("word.application")
$word.visible=1
$doc=$word.documents.open("Z:\气场.doc")
With $doc.application.selection
        .goto(1,1,3) ;从开头去到第三页,第一个参数表示找页,第二个参数表示找的方向是第一个wdGoToFirst
        .goto(3,2,5) ;继续向下去到第5行,第一个参数表示找行,第二个参数表示继续向后wdGoToNext
        .moveright(1,8) ;向右移动8个字符,第一个参数表示移动的单位是字符,第二个参数表示移动数量
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
加了说明,goto的参数有点复杂,不过对于word操作来说确实挺方便的

评分

参与人数 1金钱 +60 贡献 +20 收起 理由
gzh888666 + 60 + 20 感谢哥们了,谢谢!

查看全部评分

 楼主| 发表于 2013-1-23 23:52:41 | 显示全部楼层
本帖最后由 gzh888666 于 2013-1-23 23:58 编辑

回复 5# kevinch

谢谢VBA大神,但我测试的时候写入了第三页第14行第1列,不知为什么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-1-24 00:06:11 | 显示全部楼层
回复 5# kevinch

始终有些不太明白WORD的确定行列的标准是什么,我发现同一行中,不同的表格会出现重复的列.
发表于 2013-1-24 08:15:26 | 显示全部楼层
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个,不够的话只移到行尾

评分

参与人数 1金钱 +20 贡献 +15 收起 理由
gzh888666 + 20 + 15 感谢解答,论坛有你更精彩!

查看全部评分

发表于 2013-1-24 08:25:14 | 显示全部楼层
回复 7# gzh888666

行的性质是视觉性的,与页面视图时眼睛看到的行一致,列对于文本来说就是字符数,表格的话,你把表格复制粘贴到excel里就知道了,word的表格比较特殊,cell(行,列)引用时行与列也是眼睛看到所数出来的行列,并不像excel
发表于 2013-2-20 14:47:56 | 显示全部楼层
学习了,非常谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 11:35 , Processed in 0.098463 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表