使用OpenText和SaveAs方法在VBS中打开相对路径

时间:2014-09-20 00:48:55

标签: excel vbscript

好的,所以我在vbs文件中有一些代码,基本上我想打开一个CSV文件。执行一些更改(我可以稍后解决),然后将其保存为xls。使用完全限定的文件路径运行时,代码可以完美运行。但是我需要文件路径是相对的。这些文件将始终打开并保存到运行脚本的相同路径中。我看过GetParentFolderName和GetAbsolutePathName。但是我无法想象如何在文本中调用完全限定的路径。我已尝试将变量放在文件名所在的位置且没有引号,并附加句点。

有关构建函数或任何内容的任何示例,然后在下面的代码中调用它将是一个巨大的帮助。

Dim myXL
Const xlDelimited = 1
Const xlWorkbookNormal = -4143

Set myXL=CreateObject("Excel.Application")
myXL.Visible=False
myXL.WorkBooks.OpenText "file.csv", , , xlDelimited, , , , , True 

myXL.DisplayAlerts=False

MORE CODE WILL GO HERE

myXL.ActiveWorkbook.SaveAs "new_file.xls", xlWorkbookNormal 

myXL.DisplayAlerts=True

myXL.ActiveWorkbook.Close False
myXL.Quit

Set myXL = Nothing

2 个答案:

答案 0 :(得分:1)

您可以使用我在Relative Path

的答案中找到的代码来获取脚本的路径
p = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)

p应该是您脚本的路径,然后您可以将"file.csv"编辑为p & "\file.csv"等等。

答案 1 :(得分:1)

指出/强调

  1. 你永远不应该使用字符串连接来构建pathes; .BuildPath()是要走的路
  2. “相对路径”需要明确的“相对于什么”规范
  3. VBScript的连接运算符为&而非.(点/句点)
  4. >> f = WScript.ScriptFullName
    >> n = WScript.ScriptName
    >> p = goFS.GetParentFolderName(f)
    >> a = goFS.GetAbsolutePathName(n)
    >> c = goWS.CurrentDirectory
    >> WScript.Echo "c", c
    >> WScript.Echo "p", p
    >> WScript.Echo "?", p & n
    >> Wscript.Echo "a", a
    >> WScript.Echo "!", goFS.BuildPath(p, n)
    >>
    c C:\Documents and Settings\eh
    p M:\bin
    ? M:\binivbs.wsf
    a C:\Documents and Settings\eh\ivbs.wsf
    ! M:\bin\ivbs.wsf