找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 65594|回复: 18

[问题求助] 短短几行VBS代码为何总是提示无效字符

[复制链接]
发表于 2014-9-20 14:33:36 | 显示全部楼层 |阅读模式
  1. set oExcel=CreateObject("Excel.Application")
  2. oExcel.Visible=True
  3. set xlsfile=oExcel.Workbooks.Open FileName:="d:\data.txt",ReadOnly:=True,Format:=6,Delimiter=:"|"
复制代码
总共3行的脚本 提示第1行错误:无效字符
到底哪里出问题了呢 别的脚本类似代码运行的好好的啊 会不会是open方法的参数写法不对 可是也不应该提示是第1行的问题啊???
 楼主| 发表于 2014-9-20 15:07:15 | 显示全部楼层
重新写了一遍代码 这次是第3行出错:缺少语句,改成
  1. set oexcel=createobject("excel.application")
  2. oexcel.visible=true
  3. oexcel.workbooks.open Filename:="d:\data.txt"
复制代码
依然出错,再改
  1. set oexcel=createobject("excel.application")
  2. oexcel.visible=true
  3. oexcel.workbooks.open("d:\data.txt")
复制代码
正常运行。我晕死了 这两种写法不是都有效的吗 还请高手来解惑
发表于 2014-9-20 15:09:02 | 显示全部楼层
本帖最后由 CrLf 于 2014-9-20 15:57 编辑
FileName:="d:\data.txt",ReadOnly:=True,Format:=6,Delimiter=:"|"

这是 vba 的参数赋值方法,不适用于 vbs
vbs 不能跳着赋值,只能挨个填坑:
  1. set xlsfile=oExcel.Workbooks.Open( "d:\data.txt",,True,6,,,,,"|")
复制代码

评分

参与人数 1技术 +1 收起 理由
普大喜奔 + 1

查看全部评分

 楼主| 发表于 2014-9-20 15:11:43 | 显示全部楼层
回复 3# CrLf
真是帮了我大忙了!!这个论坛太棒了 高手如云 菜鸟的福音 哈哈
 楼主| 发表于 2014-9-20 15:12:35 | 显示全部楼层
回复 3# CrLf
今天分用完了 绝对+1
 楼主| 发表于 2014-9-20 15:22:38 | 显示全部楼层
回复 3# CrLf
word的document.open参数可以跳着写啊,比如
set docfile=objWord.Documents.Open FileName:=arg,ReadOnly:=True,ConfirmConversions:=false,NoEncodingDialog:=true
在另一个脚本里可以正常运行
excel的确是你说的 没法这么搞
发表于 2014-9-20 15:31:10 | 显示全部楼层
回复 6# 普大喜奔


    vbs 没有 FileName:=arg 这种用法
 楼主| 发表于 2014-9-20 15:33:07 | 显示全部楼层
回复 7# CrLf
呵呵 我没全贴出来 arg是个字符串变量 在前面定义了
发表于 2014-9-20 15:54:25 | 显示全部楼层
回复 8# 普大喜奔


    我的意思是 vbs 没有 := 运算符
 楼主| 发表于 2014-9-20 15:55:01 | 显示全部楼层
回复 7# CrLf
小弟又有新问题求教,还是刚才的代码,运行正常了但没有效果,比如data.txt的内容是这样

我用excel手动打开并设置分隔符为"|"的效果是这样

但代码运行的效果是这样

全部的内容都挤在第一列了 open参数好像没有起作用哇
发表于 2014-9-20 15:58:26 | 显示全部楼层
回复 10# 普大喜奔


    没注意前面有个 set,已修改,但运行到那里应该会报错退出才是,你是怎么打开的...
 楼主| 发表于 2014-9-20 16:04:45 | 显示全部楼层
回复 11# CrLf
代码是这样
  1. set oexcel=createobject("excel.application")
  2. oexcel.visible=true
  3. oexcel.workbooks.open "d:\data.txt",,True,6,,,,,"|"
复制代码
data.txt内容:
张三|12345|abc|
李大四|67890|def|
 楼主| 发表于 2014-9-20 16:07:59 | 显示全部楼层
回复 11# CrLf
你说那个打开word的代码啊 是这样
  1. objWord.Visible=False
  2. '以只读方式打开,并且避免打开文件转换或编码对话框
  3. set docfile=objWord.Documents.Open FileName:=arg,ReadOnly:=True,ConfirmConversions:=false,NoEncodingDialog:=true
  4. str=docfile.Content
  5. docfile.Close
复制代码
发表于 2014-9-20 16:24:31 | 显示全部楼层
回复 12# 普大喜奔


    同样的代码,已测无误,可能是版本差异。
    我这里 MsgBox oexcel.Version 的结果是 11.0
    你可以去下一个 vbsedit 或者直接用 excel 的宏编辑器,利用自动提示看下 .open 方法的参数说明,把参数对上位置就行
 楼主| 发表于 2014-9-20 16:30:57 | 显示全部楼层
回复 14# CrLf
好的 非常非常感谢啊 有高人指点少走好多弯路
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:26 , Processed in 0.017231 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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