2013-08-08 2 views
0

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

Возникает проблема в том, что после выбора файла с помощью браузера я получаю неуказанную ошибку с кодом 80004005, она появляется в строке 15 символа 1, и я понятия не имею, как это решить.

Любая помощь была бы высоко оценена!

Option Explicit 

Const ForReading = 1 
Const ForWriting = 2 

Dim objFSO, objInputFile, objOutputFile 
Dim intLine, intFile 
Dim strHeaders 
Dim strInputFile, strOutputPrefix, strLine 
Dim MyDate 

Dim shell 
Dim file 
Set shell = CreateObject("Shell.Application")  
Set file = shell.BrowseForFolder(0, "Choose a file:", &H4000)  
BrowseForFile = file.self.Path 

strInputFile = BrowseForFile 
strOutputPrefix = objFSO.GetBaseName(strInputFile) & DatePart("yyyy", Now) & "-" & DatePart("m", Now) & "-" & DatePart("d", Now) 
userSplit = InputBox("Enter when you want to split") 

intFile = 1 
intLine = 0 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

Set objInputFile = objFSO.OpenTextFile(strInputFile, ForReading) 

If (objInputFile.AtEndOfStream = True) Then 
    ' The file is empty 
    WScript.Quit 1 
End If 

strHeaders = objInputFile.ReadLine 

Do While (objInputFile.AtEndOfStream = False) 


    strLine = objInputFile.ReadLine 

    If (intLine <= 0) Then 
    Set objOutputFile = objFSO.CreateTextFile(strOutputPrefix & "_" & intFile & ".csv", True) 
    objOutputFile.WriteLine strHeaders 

    intLine = 1 
    End If 

    objOutputFile.WriteLine strLine 

    If (intLine >= userSplit) Then 
    objOutputFile.Close 
    Set objOutputFile = Nothing 

    intFile = intFile + 1 
    intLine = 0 
    Else 
    intLine = intLine + 1 
    End If 
Loop 
+0

У вас есть опция Option On;;) Вы должны объявить 'BrowseForFile'. Также что такое 'objFSO'? Вы должны создать объект для его использования. Я не проверял остальную часть кода после этого –

+0

Все еще бросаю сообщение об ошибке «Установить файл = shell.BrowseForFolder (0,« Выбрать файл: », & H4000)« –

+0

Он работает для меня. Вы делаете это для VBScript? Протестировано на Win 7, 64 бит –

ответ

0

Ваш запрос на просмотр ForFolder пропускает третий параметр/параметр; так изменить

Set file = shell.BrowseForFolder(0, "Choose a file:", &H4000) 

в

Set file = shell.BrowseForFolder(0, "Choose a file:", 0, &H4000) 

выше (хранится в контексте для комментариев) все неправильно

docs состояние ясно:

Создает диалоговое окно который позволяет пользователю выбрать папку, а затем возвращает объект Folder выбранной папки.

так что вы можете дисплей файлы, но не забрать/вернуть их.

+0

Если я изменюсь на это, он не позволит мне выбрать файл, просто папку :( –

+0

Он работает для меня без этой опции. –

+0

Можете ли вы пройти выбор файла Siddharth? –