找回密码
 加入
搜索
查看: 6479|回复: 14

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

 火.. [复制链接]
发表于 2011-6-20 22:36:45 | 显示全部楼层 |阅读模式
本帖最后由 xwt620 于 2011-6-23 21:24 编辑

RT,基本功能是让程序把打开的DOC文档的所有内容自动全部复制,然后新建一个XLS文件,粘贴,然后按打开的DOC文档的文件名字来保存,这种算法看似正确,但是遇到上万个DOC文件,岂不是要挂眼科了,而且还不能动鼠标和键盘。
想来想去,就需要一个能够后台执行转化的功能
大概思路整理了下:
用隐藏的方式打开DOC文档,那么又如何返回DOC的文档内容呢?
用隐藏方式新建一个XLS文档,又如何将返回的内容粘贴到里面呢?
 楼主| 发表于 2011-6-21 14:52:34 | 显示全部楼层
帖子都要沉了,还没有人回。。。
发表于 2011-6-21 15:56:32 | 显示全部楼层
转换后的格式不好,还是不要弄啦,这类的要写可以联系我。
 楼主| 发表于 2011-6-21 21:48:33 | 显示全部楼层
如果不考虑格式,那应该怎么做?
发表于 2011-6-22 10:10:43 | 显示全部楼层
用objget循环打开word文档(隐性打开,无界面),然后可以像正常操作一样读取,objcreate创建一个excel进程,循环添加新工作簿,粘贴进word文档内内容,然后保存关闭。
 楼主| 发表于 2011-6-22 23:12:54 | 显示全部楼层
我也是这样想的,可是隐藏打开后,怎样去读取内容的代码我不知道怎么写,我之前是用显示的模式,模拟人工去操作(CTRL+A,CTRL+C),可那样就只有挂眼科的份了.
看了帮助文件也没有一个可以返回文档里的内容的函数,而且用隐藏方式打开EXCEL,又怎样贴进去呢?难道可以用CTRL+V?
发表于 2011-6-23 16:25:47 | 显示全部楼层
帮助里面不是有word.au3吗
发表于 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直接处理还要好一点,很多东西不用申请。

评分

参与人数 2金钱 +30 收起 理由
xwt620 + 20 谢谢帮忙
daiyu116 + 10 代码不错,收藏了

查看全部评分

 楼主| 发表于 2011-6-23 21:01:04 | 显示全部楼层
回复 8# kevinch

太谢谢了。
office的VBA是很好用,可是我的机器上能用,其他的机器就不能用了,所以我现在想把VBA结合到AU3里,但是VBA和AU3里好多语法都不一样,写起来还需要点功夫。
发表于 2011-6-23 21:03:15 | 显示全部楼层
没有vba环境的机器上好像这个也用不了吧。
 楼主| 发表于 2011-6-23 21:23:32 | 显示全部楼层
回复 10# kevinch

这个应该很少的吧?

我刚刚测试了下,在saveas的时候出错了
我把 ,56  给删了就好了
发表于 2011-6-23 21:32:37 | 显示全部楼层
有不少人装有三合一简版的,没有vba环境的。
那个56是文件类型代码,主要是涉及现在有07和10版存在的情况才用得到,否则,只有03可以不用。
发表于 2011-6-23 21:32:57 | 显示全部楼层
有不少人装有三合一简版的,没有vba环境的。
那个56是文件类型代码,主要是涉及现在有07和10版存在的情况才用得到,否则,只有03可以不用。
发表于 2011-6-26 18:22:32 | 显示全部楼层
WORD和EXCEL不是有UDF吗?用那个参考例子很容易写出来的。
发表于 2011-6-27 09:34:04 | 显示全部楼层
大家讨论的很热闹啊,学到了很多东西!哇哈哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-2 20:32 , Processed in 0.089766 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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