[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

  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行的问题啊???
!scripting!

重新写了一遍代码 这次是第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")
复制代码
正常运行。我晕死了 这两种写法不是都有效的吗 还请高手来解惑
!scripting!

TOP

本帖最后由 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

评分人数

TOP

回复 3# CrLf
真是帮了我大忙了!!这个论坛太棒了 高手如云 菜鸟的福音 哈哈
!scripting!

TOP

回复 3# CrLf
今天分用完了 绝对+1
!scripting!

TOP

回复 3# CrLf
word的document.open参数可以跳着写啊,比如
set docfile=objWord.Documents.Open FileName:=arg,ReadOnly:=True,ConfirmConversions:=false,NoEncodingDialog:=true
在另一个脚本里可以正常运行
excel的确是你说的 没法这么搞
!scripting!

TOP

回复 6# 普大喜奔


    vbs 没有 FileName:=arg 这种用法

TOP

回复 7# CrLf
呵呵 我没全贴出来 arg是个字符串变量 在前面定义了
!scripting!

TOP

回复 8# 普大喜奔


    我的意思是 vbs 没有 := 运算符

TOP

回复 7# CrLf
小弟又有新问题求教,还是刚才的代码,运行正常了但没有效果,比如data.txt的内容是这样

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

但代码运行的效果是这样

全部的内容都挤在第一列了 open参数好像没有起作用哇
!scripting!

TOP

回复 10# 普大喜奔


    没注意前面有个 set,已修改,但运行到那里应该会报错退出才是,你是怎么打开的...

TOP

回复 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|
!scripting!

TOP

回复 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
复制代码
!scripting!

TOP

回复 12# 普大喜奔


    同样的代码,已测无误,可能是版本差异。
    我这里 MsgBox oexcel.Version 的结果是 11.0
    你可以去下一个 vbsedit 或者直接用 excel 的宏编辑器,利用自动提示看下 .open 方法的参数说明,把参数对上位置就行

TOP

回复 14# CrLf
好的 非常非常感谢啊 有高人指点少走好多弯路
!scripting!

TOP

返回列表