我创建了一个脚本,允许用户使用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
答案 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对象。
因此您可以显示文件,但不能选择/退回文件。