2016-02-03 3 views
0

У меня есть файл VBScript, чтобы открыть файл Excel и запустить макрос. Этот файл Excel находится в той же папке, что и файл VBScript. Я хотел бы использовать относительные пути для его вызова, чтобы я мог перемещать эту папку, не переписывая пути в скрипте. Сейчас моя VBScript выглядит следующим образом:Относительные пути для файла VBScript

Option Explicit 

    On Error Resume Next 

    ExcelMacroExample 

    Sub ExcelMacroExample() 

     Dim xlApp 
     Dim xlBook 

     Set xlApp = CreateObject("Excel.Application") 
     Set xlBook = xlApp.Workbooks.Open("C:\Users\Ben\Desktop\GeocodingBatchFile\Files\GeocodingStart.xlsm") 
     xlApp.Run "Export" 
     xlApp.Quit 

     Set xlBook = Nothing 
     Set xlApp = Nothing 

    End Sub 

Вместо того чтобы использовать полный путь к файлу, это было бы здорово, если бы я мог сделать что-то вроде этого:

Set xlBook = xlApp.Workbooks.Open(".\GeocodingStart.xlsm") 
+0

поиск и вы найдете http://stackoverflow.com/questions/16138831/getting-current-directory-in-vbscript – teylyn

ответ

0

Вы можете использовать FileSystemObject, чтобы получить путь к файлу сценария, как этот

Sub ExcelMacroExample() 

    Dim xlApp 
    Dim xlBook 
    Dim fso 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Dim fullpath 
    fullpath = fso.GetAbsolutePathName(".") 
    Set fso = Nothing 
    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook = xlApp.Workbooks.Open(fullpath & "\GeocodingStart.xlsm") 
    xlApp.Run "Export" 
    xlApp.Quit 

    Set xlBook = Nothing 
    Set xlApp = Nothing 

End Sub 
+1

'.GetAbsolutePathName (". ")' Дает текущему каталогу не путь к скрипту. –

+0

@ Ekkehard.Horner true, но мое предположение - это opus, запускающий скрипт из командной строки, поэтому его каталог _is_ current –

+0

Я запускаю его из пакетного файла, который на самом деле находится на один шаг вверх по файловому каталогу, однако я смог реализовать этот код и заставить его работать так, спасибо вам большое. –

2

Попробуйте это ...

Dim oFSO 
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    sScriptDir =  oFSO.GetParentFolderName(WScript.ScriptFullName)    
    Set xlBook = xlApp.Workbooks.Open(sScriptDir & "\GeocodingStart.xlsm")  
+0

Это решение работает тоже, спасибо за помощь. –