从命令行作为参数传递的字符串问题

时间:2010-07-19 18:55:51

标签: excel vbscript

我正在尝试将平面文件转换为Excel可读格式。我们收到使用波浪号(〜)作为字段分隔符的文本文件,我想将其转换为使用Tab字符的文件。我有兴趣从命令行运行它,我需要灵活处理文件名,所以我想使用参数。我的VBScript如下:

Set Args = WScript.Arguments
Set inf = Args(0)
Set outf = Args(1)

Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile(infile.Value , ForReading)
strContents = objFile.ReadAll
objFile.Close

strContents = Replace(strContents, "~", vbTab)

Set objFile = objFSO.OpenTextFile(outfile.Value , ForWriting)
objFile.Write strContents
objFile.Close

出于某种原因,我收到错误 Object required:'[string:“infile.txt”]'。使用infile,infile.Value或infile.ToString作为objFSO.OpenTextFile(infile, ForReading)中的参数似乎不起作用。

VBScript不是我的强项,有没有人有任何帮助?

1 个答案:

答案 0 :(得分:2)

  1. 命令行参数是字符串而不是对象,因此无需使用Set关键字进行分配:

    inf = Args(0)
    outf = Args(1)
    
  2. 另请注意,上面的代码已经为您提供了参数值,因此无需使用.Value.ToString等(事实上,这样做会导致运行时误差)。

  3. 您的脚本中存在拼写错误 - infoutf变量后来被称为infileoutfile