Board logo

标题: [问题求助] 短短几行VBS代码为何总是提示无效字符 [打印本页]

作者: 普大喜奔    时间: 2014-9-20 14:33     标题: 短短几行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行的问题啊???
作者: 普大喜奔    时间: 2014-9-20 15:07

重新写了一遍代码 这次是第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")
复制代码
正常运行。我晕死了 这两种写法不是都有效的吗 还请高手来解惑
作者: CrLf    时间: 2014-9-20 15:09

本帖最后由 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,,,,,"|")
复制代码

作者: 普大喜奔    时间: 2014-9-20 15:11

回复 3# CrLf
真是帮了我大忙了!!这个论坛太棒了 高手如云 菜鸟的福音 哈哈
作者: 普大喜奔    时间: 2014-9-20 15:12

回复 3# CrLf
今天分用完了 绝对+1
作者: 普大喜奔    时间: 2014-9-20 15:22

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

回复 6# 普大喜奔


    vbs 没有 FileName:=arg 这种用法
作者: 普大喜奔    时间: 2014-9-20 15:33

回复 7# CrLf
呵呵 我没全贴出来 arg是个字符串变量 在前面定义了
作者: CrLf    时间: 2014-9-20 15:54

回复 8# 普大喜奔


    我的意思是 vbs 没有 := 运算符
作者: 普大喜奔    时间: 2014-9-20 15:55

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

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

但代码运行的效果是这样

全部的内容都挤在第一列了 open参数好像没有起作用哇
作者: CrLf    时间: 2014-9-20 15:58

回复 10# 普大喜奔


    没注意前面有个 set,已修改,但运行到那里应该会报错退出才是,你是怎么打开的...
作者: 普大喜奔    时间: 2014-9-20 16:04

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

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

作者: CrLf    时间: 2014-9-20 16:24

回复 12# 普大喜奔


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

回复 14# CrLf
好的 非常非常感谢啊 有高人指点少走好多弯路
作者: 普大喜奔    时间: 2014-9-20 16:33

回复 14# CrLf
我这是12.0 难怪 微软的版本是不是太多了点
作者: zz100001    时间: 2014-9-25 15:28

新人你说分用完了,那就第二天登陆上来给补加上啊,不然会伤了大大的心,把你列入黑名单,以后再也不看你的问题了,即使换马甲也没用
作者: 普大喜奔    时间: 2014-9-25 18:12

回复 17# zz100001
已补 忙着写脚本没顾上
作者: moon3003003    时间: 2015-2-7 12:21

谢谢了,菜鸟学习




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2