0

ユーザーがシェル ブラウザーを使用してファイルを開くことができるスクリプトを作成しました。選択すると、.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 呼び出しに 3 番目のオプション パラメータがありません。だから変わる

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 に答える