中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-13 01:06
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助:vbs把xls文件转换为txt文件
可打印版本  1,358 / 9
第1楼 26933062 发表于 2010-01-05 12:59
银牌会员 发帖 879 积分 2,268
求助:vbs把xls文件转换为txt文件
求助:vbs把xls文件转换为txt文件
要求:
xzt.vbs 运行方式是从bat中调用 如: call xzt.vbs "a.xls" "hhh.txt"
vbs功能
1、首先把xls文件中的所有空值改为#
2、再把xls文件另存为hhh.txt
注:要求1中把所有空值改为#并不是要改xls文件内容,目的是要txt中的空值等于#
如果要求1有难度,可以忽略,直接解决第2个要求也可以。
表中有些单元格的数据是通过公式计算出来的结果,要求在txt中直接显示结果

补充说明:
不确定有几张表
是从 A1到有值的最大区域
但头三行有合并的单元格,如果不确定头几行含合并单元格有影响吗?
如果有影响都定死为头三行含合并单元格.
有劳大家!

[ Last edited by 26933062 on 2010-1-5 at 17:24 ]
第2楼 qinchun36 发表于 2010-01-05 15:45
高级用户 发帖 400 积分 609
哈,我正在弄一个为命令行界面服务的VBS,嘿嘿。。。

你给出的条件不完善:

1. 是否这个xls只有一张表,即只有 Sheet1 ?

2. 需要导出的范围多大?
是从 A1到有值的最大区域,还是只是能包含所有数据的最小区域,因为不排除有人前面空上很多行再写。
第3楼 26933062 发表于 2010-01-05 17:20
银牌会员 发帖 879 积分 2,268
回复2楼
不确定有几张表
是从 A1到有值的最大区域
但头三行有合并的单元格,如果不确定头几行含合并单元格有影响吗?
谢谢!

[ Last edited by 26933062 on 2010-1-5 at 17:22 ]
第4楼 qinchun36 发表于 2010-01-06 10:24
高级用户 发帖 400 积分 609
不能解决的问题:

1. 不能按照你给的方案命名导出的文件,因为不确定有几张表,你在命令行无法给出参数;
我把你的第二个参数改成指定导出路径,文本文件的命名是 "输出路径\EXCEL文件名.表名.txt"

2. 经试验发现,合并的单元格被识别成 最左上的单元格包含所有数据,其他单元格数据为空。

另:
不给输出路径则默认当前工作路径;
默认不导出空的表,如果有特殊需求可以修改 VBS 源代码里面的那个参数,有说明。


第5楼 26933062 发表于 2010-01-06 19:43
银牌会员 发帖 879 积分 2,268
谢谢你的帮助,已在批处理之家找到答案,http://bathome.l3.wuyou.com/thread-6921-1-1.html
再次感谢,我会测试你的代码的。
第6楼 mountvol 发表于 2010-01-06 21:03
初级用户 发帖 117 积分 186
用ado来操作excel最适合,直接可以getstring然后保存为文本就可以了。
而且还可以遍历表名.
第7楼 moniuming 发表于 2010-01-06 22:37
银牌会员 发帖 574 积分 1,335 来自 广西
其实在excel中通过vba来操作会更容易些...
第8楼 qinchun36 发表于 2010-01-07 09:38
高级用户 发帖 400 积分 609
Re: 5 哇,原来是马甲!

Re: 6 个人认为还是微软自己提供的专门操作EXCEL的对象好用,你说的变量表名之类都只是它方法的一小部分,你可以尝试运行一下这个代码,最后提示就可以看出是经过遍历所有表名出来的结果。

Re: 7 我没有试过,但是觉得VBA看起来语法太严格,不喜欢

其实要读出数据很简单,几个循环就行了,可是我对输出的样子好不好看比较在意,所有多加了些代码,可能看起来很繁琐把,个人爱好不同。
第9楼 mountvol 发表于 2010-01-07 20:17
初级用户 发帖 117 积分 186
很明显,并不是所有的windows上都装有excel,所以Excel.Application其实很多时候并不能被创建。
另外,vba比vbs强大(因为它可以用API),在vbs中可以通过操作OFFICE来使用vba,从而实现调用API.
第10楼 bat-zw 发表于 2010-01-07 20:57
金牌会员 发帖 1,276 积分 3,105
我来跟一贴
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023