2014-09-20 107 views
0

好吧,我在vbs文件中有一些代碼,基本上我想打開一個CSV文件。執行一些更改(我可以稍後再解決),然後將其保存爲xls。代碼在完全合格的文件路徑下運行時完美無瑕。但是我需要文件路徑是相對的。文件將始終打開並保存到腳本運行的相同路徑。我查看了GetParentFolderName和GetAbsolutePathName。但是我無法確定如何在文本中調用完全限定的路徑。我試過把變量放在沒有引號的文件名後面,並添加了句點。使用OpenText和SaveAs方法在VBS中打開相對路徑

任何關於構建函數或其他內容的例子,然後在下面的代碼中調用它將會是一個巨大的幫助。

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 
+0

我到處搜尋,但我只是無法將我的頭圍繞着我想要做的事情。 – Alkemdah 2014-09-20 00:51:03

回答

1

您可以通過使用此代碼,我發現在回答有關Relative Path

p = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) 

p應該是路徑到腳本,那麼你可以編輯"file.csv"p & "\file.csv"讓你的腳本的路徑和所以。

+0

這有幫助,我看到了這一點,但我不知道如何在我的電話中實現它。只需將p&「\ name.csv」工作即可。我不知道P是路徑的變量,並且使用&將它們連接在一起。謝謝。 – Alkemdah 2014-09-22 17:01:32

+0

不客氣。 – user3980820 2014-09-22 20:25:07

1

要指出的/強調

  1. 你不應該使用字符串連接來構建pathes; .BuildPath()是去
  2. 「相對路徑」 需要明確的方式 「相對於什麼是」 規範
  3. VBScript的連接符爲&.(點/週期)

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