2013-07-08 6 views
0

Я написал сценарий, что он делает это, вы помещаете файл в папку, а затем автоматически преобразуете файл в файл с разделителями табуляции. Затем он создает новую папку под названием «output». Мне нужно сделать это, чтобы сохранить его в указанном месте. Ниже приведена копия кода, который я написал.Изменение каталога вывода сценария vbs

Dim saveDirBase 

set fso = CreateObject("Scripting.FileSystemObject") 
set shell = CreateObject("WScript.Shell") 
set objExcel = CreateObject("Excel.Application") 

set top = fso.GetFolder(shell.CurrentDirectory) 
saveDirBase = top & "\" & "output" 

Sub TraverseFolders(path) 
set folder = fso.GetFolder(path) 

XL2Tab(folder) 

For each item in folder.SubFolders 
If item.Path <> saveDirBase Then 
Call TraverseFolders(item.Path) 
End If 
Next 
set folder = Nothing 
End Sub 

Sub XL2Tab(folder) 
Dim saveDir 
set files = folder.Files 

If folder.Name <> top.Name Then 
saveDir = saveDirBase & "\" & folder.Name 
Else 
saveDir = saveDirBase 
End If 

If fso.FolderExists(saveDir) = False Then 
fso.CreateFolder(saveDir) 
End If 

For each file In files 
If file.Name <> Wscript.ScriptName Then 
objExcel.Application.DisplayAlerts = False 
Set objWorkbook = objExcel.Workbooks.open(folder.Path & "\" & file.Name) 
objWorkbook.SaveAs saveDir & "\" & file.Name & ".txt", -4158  
objWorkbook.close 
objExcel.Application.DisplayAlerts = True 
End If 
Next 
End Sub 

If fso.FolderExists(saveDirBase) = False Then 
fso.CreateFolder(saveDirBase) 
End If 

Call TraverseFolders(top) 
+0

Предположительно, вы имеете в виду местоположение, отличное от «выхода»? Как именно это местоположение указано? пользовательский ввод? Файл конфигурации? ключ реестра? –

ответ

0

Если ваш вопрос заключается в том, чтобы запросить у пользователя папки вывода, самый простой способ, чтобы запросить ввод данных пользователя бы InputBox:

top = InputBox("Enter base folder.", WScript.ScriptName) 

Это будет требовать некоторых проверок ввода, хотя:

If IsEmpty(top) Then 
    WScript.Echo "User pressed [Cancel]." 
    WScript.Quit 1 
ElseIf top = "" Then 
    WScript.Echo "Empty path." 
    WScript.Quit 1 
ElseIf Not fso.FolderExists(top) Then 
    WScript.Echo top & " doesn't exist. Creating ..." 
    fso.CreateFolder(top) 
End If 
... 

лучше всего было бы, используя Shell.BrowseForFolder метод:

Set os = CreateObject("Shell.Application") 
basedir = os.Namespace("C:\").Self.Path 
Set fldr = os.BrowseForFolder(0, "Select folder:", &h10&, basedir) 

If fldr Is Nothing Then 
    WScript.Echo "User pressed [Cancel]." 
    WScript.Quit 1 
End If 

top = fldr.Self.Path 
... 
+0

Что нужно сделать, так это перейти от одной сетевой папки к другой общей папке. Это должно быть автоматизированной задачей, и она также должна будет иметь возможность видеть новейший файл. – BigCAT41

+0

Что вы подразумеваете под «переходом от одной сетевой папки к другой общей папке»? Что вы подразумеваете под «видеть новейший файл»? Пожалуйста, обновите свой вопрос с более подробным описанием того, что вы хотите сценарий. –

Смежные вопросы