0

我制作了一个脚本,允许用户使用 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 
4

1 回答 1

0

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

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

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

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

文档清楚地说明:

创建一个对话框,使用户能够选择一个文件夹,然后返回所选文件夹的 Folder 对象。

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

于 2013-08-08T13:06:15.477 回答