想做个批量DOC转XLS的工具,感觉算法太差劲,请求帮助[已解决]
本帖最后由 xwt620 于 2011-6-23 21:24 编辑RT,基本功能是让程序把打开的DOC文档的所有内容自动全部复制,然后新建一个XLS文件,粘贴,然后按打开的DOC文档的文件名字来保存,这种算法看似正确,但是遇到上万个DOC文件,岂不是要挂眼科了,而且还不能动鼠标和键盘。
想来想去,就需要一个能够后台执行转化的功能
大概思路整理了下:
用隐藏的方式打开DOC文档,那么又如何返回DOC的文档内容呢?
用隐藏方式新建一个XLS文档,又如何将返回的内容粘贴到里面呢? 帖子都要沉了,还没有人回。。。 转换后的格式不好,还是不要弄啦,这类的要写可以联系我。 如果不考虑格式,那应该怎么做? 用objget循环打开word文档(隐性打开,无界面),然后可以像正常操作一样读取,objcreate创建一个excel进程,循环添加新工作簿,粘贴进word文档内内容,然后保存关闭。 我也是这样想的,可是隐藏打开后,怎样去读取内容的代码我不知道怎么写,我之前是用显示的模式,模拟人工去操作(CTRL+A,CTRL+C),可那样就只有挂眼科的份了.
看了帮助文件也没有一个可以返回文档里的内容的函数,而且用隐藏方式打开EXCEL,又怎样贴进去呢?难道可以用CTRL+V? 帮助里面不是有word.au3吗 $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直接处理还要好一点,很多东西不用申请。 回复 8# kevinch
太谢谢了。
office的VBA是很好用,可是我的机器上能用,其他的机器就不能用了,所以我现在想把VBA结合到AU3里,但是VBA和AU3里好多语法都不一样,写起来还需要点功夫。 没有vba环境的机器上好像这个也用不了吧。 回复 10# kevinch
这个应该很少的吧?
我刚刚测试了下,在saveas的时候出错了
我把 ,56给删了就好了 有不少人装有三合一简版的,没有vba环境的。
那个56是文件类型代码,主要是涉及现在有07和10版存在的情况才用得到,否则,只有03可以不用。 有不少人装有三合一简版的,没有vba环境的。
那个56是文件类型代码,主要是涉及现在有07和10版存在的情况才用得到,否则,只有03可以不用。 WORD和EXCEL不是有UDF吗?用那个参考例子很容易写出来的。 大家讨论的很热闹啊,学到了很多东西!哇哈哈
页:
[1]