Узнать в открытом txt кол-во строк, не перебирая их в цикле

George-III
Дата: 22.02.2008 09:55:43
Можно ли используя только средства VBA открыть txt и получить число строк не перебирая их в цикле, что-то вроде #FreeFile.LineCount
sdfgsdfgsdf
Дата: 22.02.2008 09:58:25
неа
нужно хотя-бы зделать перебор шоб найти все символы #10#13
Старый ворчун
Дата: 22.02.2008 10:06:45
split + ubound
mds_world
Дата: 22.02.2008 10:06:47
Прилинковать txt и взять Recordcount
Старый ворчун
Дата: 22.02.2008 10:19:20
вот, без перебора (возможны опечатки, но идея должна быть понятна)

Sub FileLineCount(Filespec as string) as long
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Filespec, 8, 0)
    FileLineCount = f.line
    f.Close
End Sub
Старый ворчун
Дата: 22.02.2008 10:21:55
одну опечатку уже нашел, конечно не Sub, а Function :)
Анатолий ( Киев )
Дата: 22.02.2008 10:59:11
Можно и чисто VBA:
Dim v As Variant
    Open "C:\Autoexec.bat" For Input As #1
    v = Input(LOF(1), #1)
    Close #1
    v = Split(v, vbCrLf)
    MsgBox "Строк: " & UBound(v)
Для перебора строк: For i = 0 To UBound(v) - 1
booby
Дата: 22.02.2008 11:21:10
Старый ворчун
вот, без перебора (возможны опечатки, но идея должна быть понятна)

Function FileLineCount(Filespec as string) as long
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Filespec, 8, 0)
    FileLineCount = f.line
    f.Close
End Sub

насчет опечаток:
все-таки надо вычитать файл, чтобы понять, сколько строк

Sub FileLineCount(Filespec as string) as long
    Dim fs, f, sAllText
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Filespec, 8, 0)
  
    sAllText =  f.ReadAll    
  
    FileLineCount = f.line
    f.Close
End Sub
Старый ворчун
Дата: 22.02.2008 11:28:18
booby
насчет опечаток:
все-таки надо вычитать файл, чтобы понять, сколько строк

Sub FileLineCount(Filespec as string) as long
    Dim fs, f, sAllText
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Filespec, 8, 0)
  
    sAllText =  f.ReadAll    
  
    FileLineCount = f.line
    f.Close
End Sub

Поясните, что надо вычитать?
Зачем делать .ReadAll?
Я откываю файл ForAppend и курсор позиционируется в конце, что еще нужно?
Старый ворчун
Дата: 22.02.2008 11:29:03
Анатолий ( Киев )
Можно и чисто VBA:
Dim v As Variant
    Open "C:\Autoexec.bat" For Input As #1
    v = Input(LOF(1), #1)
    Close #1
    v = Split(v, vbCrLf)
    MsgBox "Строк: " & UBound(v)
Для перебора строк: For i = 0 To UBound(v) - 1

об этом уже сказано выше