找回密码
 加入
搜索
查看: 1380|回复: 11

[系统综合] 【已解决】请教,如何打开一个现有的Word ?

[复制链接]
发表于 2021-10-29 21:12:49 | 显示全部楼层 |阅读模式
本帖最后由 itzyx 于 2021-11-2 11:06 编辑

各位大佬,本人刚刚接触word这一块,小白一枚,想写一个word转pdf的小程序,下面是代码:
Local $oWord = _Word_Create()
Local $oDOC=_Word_DocOpen($oWord,'C:\Users\user\Desktop\1.docx')
_Word_DocExport($oDOC,'C:\Users\user\Desktop\1.pdf')
我只有一个在桌面 命名为1.docx的word文档,但是我通过 引入另一个excel里面的数据,然后点击word 菜单栏的邮件 按钮切换,实现虽然是同一个路径 同一个名称的word,但是每切换一次,word里面的具体内容不同的结果。。。。

虽然我用上面的代码打开了word, 但是因为没有手动在打开前导入excel数据,导致word菜单栏的 邮件按钮点击不了,只能打印一份PDF。
所以想问问如何用au3打开一个已经打开的wrod,这样我就可以点击word菜单栏的邮件 按钮切换,循环打印多份PDF。或者 au3能不能直接打印一个已经打开的wrod?
看了帮助,用_Word_Create(True,False)也不行,所以请教一下各位大佬 有没有好的方法 ,万分感谢。
发表于 2021-11-2 12:03:25 | 显示全部楼层
itzyx 发表于 2021-11-2 11:05
录制宏,确实不知道怎么操作的, 用的控件点击, 用objget 成功获取到了文件对象,后面我把变量$oDOC 重新 ...

$oDOC=objget('C:\Users\user\Desktop\1.docx')  你这个显然 $oDOC 是和文件一一对应的,虽切换了但文件对象并没变,打印自然就是原文件内容了。
录制宏:菜单-视图 > 宏 下拉小箭头 > 录制宏

评分

参与人数 1金钱 +40 收起 理由
itzyx + 40 赞一个! 谢谢A大

查看全部评分

发表于 2021-10-30 09:28:28 | 显示全部楼层
如果word文档已经打开,直接$oDoc=objget('C:\Users\user\Desktop\1.docx')就能获取word文档对象了

评分

参与人数 1金钱 +40 收起 理由
itzyx + 40 赞一个!

查看全部评分

发表于 2021-10-30 09:30:55 | 显示全部楼层
没打开这样也能获得,不过是隐藏的,需要设置$oDoc.application.visible=true显示出来,也可以等于false不显示出来,对于只读操作设不设置这个都没问题,如果有修改保存的操作就一定要设置,不然下次打开文件时界面可能会有异常
 楼主| 发表于 2021-10-30 12:55:59 | 显示全部楼层
本帖最后由 itzyx 于 2021-10-30 13:04 编辑
kevinch 发表于 2021-10-30 09:28
如果word文档已经打开,直接$oDoc=objget('C:%users%user\Desktop\1.docx')就能获取word文档对象了

感谢大佬解答,但是我现在遇到一个新问题,就是我用你的方法 成功获取了word文档对象,也成功打印了对应的PDF。但是我通过控件 点击切换下一个word内容后,打印的pdf内容还是之前的内容,虽然我已经切换成功了,但是打印的结果不知道为啥还是一样的,这个有办法解决吗?
下面是代码:
WinActivate('1.docx - Word')   ;激活word(这里已经成功手动导入EXCEL的内容)
ControlClick('1.docx - Word','','NetUIHWND1','left',1,337,45) ;点击菜单栏“邮件”按钮

ControlClick('1.docx - Word','','NetUIHWND1','left',1,827,76) ; 点击 word 控件,切换word 的文本内容
$oDOC=objget('C:\Users\user\Desktop\1.docx') ;获取对应的word文档对象
_Word_DocExport($oDOC,'C:\Users\user\Desktop\1'&StringMid($oDOC.Content.Text,4,9)&'.pdf') ;打印pdf,并以对应 word 文本里面的no号,作为pdf的命名前缀。


发表于 2021-10-30 14:39:38 | 显示全部楼层
没遇到过,不清楚
 楼主| 发表于 2021-10-30 17:17:35 | 显示全部楼层
kevinch 发表于 2021-10-30 14:39
没遇到过,不清楚

大佬,那麻烦再次请教一下,我一个打开的word文档,打开前已经手动填入数据源了,用$oDoc=objget('C:\Users\user\Desktop\1.docx')获取word文档对象,不是应该可以直接获取嘛,为什么还会提示导入数据源,如图所示:后面我尝试手动点击获取数据,$oDoc.application.visible=true 然后让窗口显示,但是貌似偶尔会提示错误,所以想搞清楚如何直接的获取已经打开的word对象呢,确实没弄懂,希望能指点一下,万分感谢!

本帖子中包含更多资源

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

×
发表于 2021-10-30 18:45:46 | 显示全部楼层
我不知道你用的什么方式对excel和word进行交互操作,而你操作的过程可靠性可能不太好,导致了异常出现,如果没有更多信息,我只能这样猜测
 楼主| 发表于 2021-10-30 19:39:20 | 显示全部楼层
kevinch 发表于 2021-10-30 18:45
我不知道你用的什么方式对excel和word进行交互操作,而你操作的过程可靠性可能不太好,导致了异常出现,如 ...

利用word自带的邮件功能,链接既定的数据库(excel),如图所示点击邮件里面的 切换可以更换word的内容 ,以此来实现打印不同的pdf。但是 _Word_DocExport 需要先获取导出的 Word 文档对象,我用$oDoc=objget('C:\Users\user\Desktop\1.docx')获取Word 文档对象,但是每次总会有弹框提示,没办法直接导出pdf.....

本帖子中包含更多资源

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

×
发表于 2021-10-31 07:47:09 | 显示全部楼层
你可以录个宏,看一下点击下一个的代码是什么,如果可以录得到的话,改写一下,比模拟操作稳定
 楼主| 发表于 2021-10-31 20:21:22 | 显示全部楼层
本帖最后由 itzyx 于 2021-10-31 21:00 编辑
kevinch 发表于 2021-10-31 07:47
你可以录个宏,看一下点击下一个的代码是什么,如果可以录得到的话,改写一下,比模拟操作稳定

好的  感谢大佬解答,不过小声问句这个录制宏,应该怎么操作啊。。。
 楼主| 发表于 2021-11-2 11:05:42 | 显示全部楼层
录制宏,确实不知道怎么操作的, 用的控件点击, 用objget 成功获取到了文件对象,后面我把变量$oDOC 重新赋值,成功打印了不同的pdf。在此感谢kevinch 大佬的热心解答
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-26 20:27 , Processed in 0.080857 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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