xwt620 发表于 2011-6-20 22:36:45

想做个批量DOC转XLS的工具,感觉算法太差劲,请求帮助[已解决]

本帖最后由 xwt620 于 2011-6-23 21:24 编辑

RT,基本功能是让程序把打开的DOC文档的所有内容自动全部复制,然后新建一个XLS文件,粘贴,然后按打开的DOC文档的文件名字来保存,这种算法看似正确,但是遇到上万个DOC文件,岂不是要挂眼科了,而且还不能动鼠标和键盘。
想来想去,就需要一个能够后台执行转化的功能
大概思路整理了下:
用隐藏的方式打开DOC文档,那么又如何返回DOC的文档内容呢?
用隐藏方式新建一个XLS文档,又如何将返回的内容粘贴到里面呢?

xwt620 发表于 2011-6-21 14:52:34

帖子都要沉了,还没有人回。。。

kevinch 发表于 2011-6-21 15:56:32

转换后的格式不好,还是不要弄啦,这类的要写可以联系我。

xwt620 发表于 2011-6-21 21:48:33

如果不考虑格式,那应该怎么做?

kevinch 发表于 2011-6-22 10:10:43

用objget循环打开word文档(隐性打开,无界面),然后可以像正常操作一样读取,objcreate创建一个excel进程,循环添加新工作簿,粘贴进word文档内内容,然后保存关闭。

xwt620 发表于 2011-6-22 23:12:54

我也是这样想的,可是隐藏打开后,怎样去读取内容的代码我不知道怎么写,我之前是用显示的模式,模拟人工去操作(CTRL+A,CTRL+C),可那样就只有挂眼科的份了.
看了帮助文件也没有一个可以返回文档里的内容的函数,而且用隐藏方式打开EXCEL,又怎样贴进去呢?难道可以用CTRL+V?

xowen 发表于 2011-6-23 16:25:47

帮助里面不是有word.au3吗

kevinch 发表于 2011-6-23 18:09:55

$o_WordApp=ObjCreate("Word.Application")
With $o_WordApp
        .visible=False
        .displayalerts=False
EndWith
$o_ExcelApp=ObjCreate("Excel.Application")
With $o_ExcelApp
        .visible=False
        .displayalerts=False
        .sheetsinnewworkbook=1
EndWith
$s_Path=FileSelectFolder("请选择目录:","")
If @error Then Exit 0
$h_DOCS=FileFindFirstFile($s_Path&"\*.doc")
If $h_DOCS=-1 Then Exit 0
While 1
        $s_Doc=FileFindNextFile($h_DOCS)
        If @error Then ExitLoop
        ConsoleWrite($s_Doc)
        $o_Document=$o_WordApp.documents.open($s_Path&"\"&$s_Doc)
        If IsObj($o_Document) Then
                $o_Document.range.copy
                $o_Excel=$o_ExcelApp.workbooks.add
                With $o_Excel
                        .activesheet.paste
                        .saveas($s_Path&"\"&StringLeft($o_Document.name,StringInStr($o_Document.name,".",-1)-1)&".xls",56)
                        .close(False)
                EndWith
                $o_Document.close(False)
        EndIf
WEnd
FileClose($h_DOCS)
With $o_ExcelApp
        .sheetsinnewworkbook=3
        .displayalerts=True
        .quit
EndWith
$o_WordApp.quit
MsgBox(0,"","处理完成")这个试下,回答的累,还不如写代码了,另外用excel或者word的vba直接处理还要好一点,很多东西不用申请。

xwt620 发表于 2011-6-23 21:01:04

回复 8# kevinch

太谢谢了。
office的VBA是很好用,可是我的机器上能用,其他的机器就不能用了,所以我现在想把VBA结合到AU3里,但是VBA和AU3里好多语法都不一样,写起来还需要点功夫。

kevinch 发表于 2011-6-23 21:03:15

没有vba环境的机器上好像这个也用不了吧。

xwt620 发表于 2011-6-23 21:23:32

回复 10# kevinch

这个应该很少的吧?

我刚刚测试了下,在saveas的时候出错了
我把 ,56给删了就好了

kevinch 发表于 2011-6-23 21:32:37

有不少人装有三合一简版的,没有vba环境的。
那个56是文件类型代码,主要是涉及现在有07和10版存在的情况才用得到,否则,只有03可以不用。

kevinch 发表于 2011-6-23 21:32:57

有不少人装有三合一简版的,没有vba环境的。
那个56是文件类型代码,主要是涉及现在有07和10版存在的情况才用得到,否则,只有03可以不用。

曼菲士 发表于 2011-6-26 18:22:32

WORD和EXCEL不是有UDF吗?用那个参考例子很容易写出来的。

nxbigdaddy 发表于 2011-6-27 09:34:04

大家讨论的很热闹啊,学到了很多东西!哇哈哈
页: [1]
查看完整版本: 想做个批量DOC转XLS的工具,感觉算法太差劲,请求帮助[已解决]