Board logo

標題: [發問] .READLine的用法 [打印本頁]

作者: acdx    時間: 2014-6-6 14:41     標題: .READLine的用法

.READLine只能依序讀取一行行的資料嗎?如果我想要讀取最後一行的資料開如何寫呢?
範例: test.txt檔:
----------------
3
4
5
(空白)
(空白)
8
ECMA-74 +
----------------
我想要讀取最後一行(即ECMA-74 +)該如何寫呢?
作者: stillfish00    時間: 2014-6-6 16:37

回復 1# acdx

你指的Readline應該是指用FileSystemObject的方法吧?
你可以參考這篇,How Can I Read Just the Last Line of a Text file?

應該沒有辦法"直接"只讀檔案最後一行,但是可以一行一行讀直到取得最後一行。
不過我不知道你的困擾是不是檔案非常大,一行一行讀太慢,若是這原因,也可以一次讀完再反向找換行字元(要看你檔案的換行字元是哪一種)
作者: GBKEE    時間: 2014-6-6 21:33

回復 1# acdx
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer, objFile As Object, A As Variant, E As Variant
  4.     Set objFile = CreateObject("Scripting.FileSystemObject")
  5.     Set objFile = objFile.OpenTextFile("D:\Test.txt", 1)
  6.     A = objFile.READALL
  7.     A = Replace(A, vbCr, "")     '消除復位字元
  8.     A = Split(A, "ECMA-74 +")(0) '取得"ECMA-74 +"之前的串
  9.     A = Replace(A, vbLf & vbLf, vbLf)  '消除空白列
  10.     A = Split(A, vbLf)
  11.     For i = 0 To UBound(A) - 1
  12.         MsgBox A(i)
  13.     Next
  14. End Sub
複製代碼

作者: acdx    時間: 2014-6-9 16:05

回復 3# GBKEE
G大 我希望的是可以讀取最後一行的值,它是未知的,可能是"ECMA-74 +"也可能是"ABCD"
作者: GBKEE    時間: 2014-6-10 07:32

回復 4# acdx
讀取最後一行的值
是檔案的最底部的那一行嗎?

還是那一行的可能是"ECMA-74 +"也可能是"ABCD" ,不是檔案的最底部的那一行?
這字串有固定是那些字串嗎?
作者: acdx    時間: 2014-6-10 15:27

回復 5# GBKEE
是檔案的最底部一行
它可能的字串有3種:ECMA-74+, Normal, frequency
作者: GBKEE    時間: 2014-6-10 20:30

回復 6# acdx
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer, objFile As Object, A As Variant
  4.     Set objFile = CreateObject("Scripting.FileSystemObject")
  5.     Set objFile = objFile.OpenTextFile("D:\Test.txt", 1) '開啟文字檔
  6.     A = objFile.READALL      '讀取文字檔全部字串
  7.     Do While InStr(A, vbCrLf) Or InStr(A, vbLf & vbLf)
  8.         A = Replace(A, vbCrLf, vbLf)      '消除復位字元
  9.         A = Replace(A, vbLf & vbLf, vbLf) '消除空白列
  10.     Loop
  11.     If Mid(A, Len(A)) = vbLf Then A = Mid(A, 1, Len(A) - 1) '清除最後字元是換行字元。
  12.     A = Split(A, vbLf)  '檔案中有資料的行,置入陣列
  13.     MsgBox A(UBound(A)) '檔案的最後有資料的那一行
  14. End Sub
複製代碼

作者: 198188    時間: 2024-5-2 14:10

回復 1# acdx

你想在哪個存儲格内顯示,就直接輸入下面的公式
如果數據在A欄
    =LOOKUP(1,0/(A:A<>""),A:A)

如果數據在B欄
    =LOOKUP(1,0/(B:B<>""),B:B)

如此類推




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)