vba 讀寫文本文件
順序文件的讀用input/line input,寫用write/print 2.打開二進(jìn)制文件:open filename for binary as.. 二進(jìn)制文件的讀用get,寫用put
Write和Print以及Input是不能指定地址的,完全依賴文件指針。而Get和Put是對(duì)地址操作的。還有一個(gè)區(qū)別在于:順序文件被打開后不能同時(shí)對(duì)一個(gè)文件號(hào)進(jìn)行讀寫操作,假如你想對(duì)這個(gè)文件同時(shí)讀寫,需要用兩個(gè)文件號(hào)打開。而二進(jìn)制文件卻可以同時(shí)進(jìn)行讀寫操作。 由于Get和Put是對(duì)地址操作的,假如你想保存一個(gè)Integer類型的變量,那么下面的語句就會(huì)出毛病的:
Put #1,1,intValue1 Put #1,2,intValue2
由于Integer是占用兩個(gè)字節(jié)的,你這樣寫會(huì)導(dǎo)致intValue1丟失高位字節(jié)。所以應(yīng)該自行寫一個(gè)函數(shù)計(jì)算地址。簡(jiǎn)單的地址計(jì)算函數(shù)是這樣的:
Function AddressGetByRecNum(pRecNum As Long,pRecMiareg As Long,pRecLen As Integer) As Long Dim tOutLng As Long tOutLng=pRecNum*pRecLen+pRecMiareg AddressGetByRecNum=tOutLng End Function
pRecNum是變量的記錄號(hào)碼。 pRecMiareg是偏移量,假如你沒有設(shè)計(jì)文件頭,通常取1。 pRecLen是記錄的字節(jié)長度,可以用常用。如果自動(dòng)測(cè)試,一定要用LenB函數(shù)來取。
Sample:
Dim txt As String
txt = "d:\send.txt"
Dim strData As String
Open txt For Input As #2 '...讀文件
Do While Not EOF(2)
Line Input #2, strData
Text1.Text = strData
Loop
Close #2
Open txt For Output as #1 '...寫文件
strData="welcome"
Print #1, strData
加入回車加換行:Chr$(13) + Chr$(10)/vbCrLf,可換行 Open txt For Append As #1 文件后面追加,不會(huì)覆蓋 Open txt For Binary as #3
Put #3,4,"aaa" '...寫入數(shù)據(jù)
'...讀取數(shù)據(jù) Dim txt As String txt = "d:\send.txt"
Dim TempFile As Long Dim LoadBytes() As Byte
TempFile = FreeFile
Open txt For Binary As #TempFile
ReDim LoadBytes(1 To LOF(TempFile)) As Byte
Get #TempFile, , LoadBytes'...讀取數(shù)據(jù)到數(shù)組
Close TempFile
Text1.Text = StrConv(LoadBytes, vbUnicode)
引文來源 vba 讀寫文本文件 — Windows Live |
|