【已解决】请教,如何打开一个现有的Word ?
本帖最后由 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)也不行,所以请教一下各位大佬 有没有好的方法 ,万分感谢。
itzyx 发表于 2021-11-2 11:05
录制宏,确实不知道怎么操作的, 用的控件点击, 用objget 成功获取到了文件对象,后面我把变量$oDOC 重新 ...
$oDOC=objget('C:\Users\user\Desktop\1.docx')你这个显然 $oDOC 是和文件一一对应的,虽切换了但文件对象并没变,打印自然就是原文件内容了。
录制宏:菜单-视图 > 宏 下拉小箭头 > 录制宏 如果word文档已经打开,直接$oDoc=objget('C:\Users\user\Desktop\1.docx')就能获取word文档对象了 没打开这样也能获得,不过是隐藏的,需要设置$oDoc.application.visible=true显示出来,也可以等于false不显示出来,对于只读操作设不设置这个都没问题,如果有修改保存的操作就一定要设置,不然下次打开文件时界面可能会有异常 本帖最后由 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的命名前缀。
没遇到过,不清楚 kevinch 发表于 2021-10-30 14:39
没遇到过,不清楚
大佬,那麻烦再次请教一下,我一个打开的word文档,打开前已经手动填入数据源了,用$oDoc=objget('C:\Users\user\Desktop\1.docx')获取word文档对象,不是应该可以直接获取嘛,为什么还会提示导入数据源,如图所示:后面我尝试手动点击获取数据,$oDoc.application.visible=true 然后让窗口显示,但是貌似偶尔会提示错误,所以想搞清楚如何直接的获取已经打开的word对象呢,确实没弄懂,希望能指点一下,万分感谢!
我不知道你用的什么方式对excel和word进行交互操作,而你操作的过程可靠性可能不太好,导致了异常出现,如果没有更多信息,我只能这样猜测 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.....
你可以录个宏,看一下点击下一个的代码是什么,如果可以录得到的话,改写一下,比模拟操作稳定 本帖最后由 itzyx 于 2021-10-31 21:00 编辑
kevinch 发表于 2021-10-31 07:47
你可以录个宏,看一下点击下一个的代码是什么,如果可以录得到的话,改写一下,比模拟操作稳定
好的感谢大佬解答,不过小声问句这个录制宏,应该怎么操作啊。。。
录制宏,确实不知道怎么操作的, 用的控件点击, 用objget 成功获取到了文件对象,后面我把变量$oDOC 重新赋值,成功打印了不同的pdf。在此感谢kevinch 大佬的热心解答
页:
[1]