【发布时间】:2018-06-08 11:31:12
【问题描述】:
我允许用户选择多个文件并找到其中行数最多的文件。当我运行下面的代码时,我在 Opentextfile 的行上收到“运行时错误'438'。-> txsInput = objFSO.OpenTextFile(FileName, ForReading)
Dim objFSO, txsInput, strTemp, arrLines
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False
'set and determine file picker behaviour
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = True
'Launch file picker, exit if no files selected. Hold Ctrl to select multiple files.
If Not fd.Show = -1 Then Exit Sub
'find longest file
For i = 1 To fd.SelectedItems.Count
FileName = fd.SelectedItems(i)
txsInput = objFSO.OpenTextFile(FileName, ForReading)
'Skip lines one by one
Do While txsInput.AtEndOfStream <> True
txsInput.SkipLine ' or strTemp = txsInput.ReadLine
Loop
If longestFileLength < txsInput.Line - 1 Then
longestFileLength = txsInput.Line - 1
longestFileIndex = i
End If
'cleanup
Set objFSO = Nothing
Next i
Cells(headerOffset, 20) = "Length" & longestFileLength
Cells(headerOffset, 21) = "index" & longestFileIndex
【问题讨论】:
-
Set objFSO = Nothing发生在 inside 循环中,因此在第二次迭代中,它的Nothing没有OpenTextFile(),你就会得到错误。 -
@AlexK。 - 我猜 OP 在第一次迭代时得到错误...
-
没错,Nothing 问题将是错误 91