VBScript打开CSV和拆分

时间:2013-08-08 12:47:38

标签: excel csv vbscript

我创建了一个脚本,允许用户使用shell浏览器打开文件,一旦选中,系统会提示他们输入他们想要将.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 

1 个答案:

答案 0 :(得分:0)

您的BrowseForFolder调用错过了第三个/ option参数;所以改变

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

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

以上(保留用于评论的上下文)都是错误的

docs状态明确:

  

创建一个对话框,使用户可以选择文件夹   返回所选文件夹的Folder对象。

因此您可以显示文件,但不能选择/退回文件。