【轉(zhuǎn)載】VBA 讀取/寫(xiě)入文本文件_編織博客

2013-12-06 13:57 查看博客原文

1、Open 語(yǔ)句?

打開(kāi)方式有?

Input:以讀取方式打開(kāi)。

Output:以寫(xiě)入方式打開(kāi)。

Append:以追加方式,即添加內(nèi)容到文件末尾打開(kāi)。

Binary:以二進(jìn)制方式打開(kāi)。

Random:以隨機(jī)方式打開(kāi),如果未指定方式,則以 Random 方式打開(kāi)文件。

?Open pathname For mode As [#]filenumber

?Open "c:\a.txt" For Output As #1

filenumber? 是一個(gè)有效的文件號(hào),范圍在 1 到 511 之間。

如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打開(kāi)文件時(shí),可以建立這一文件。?

2、Close 語(yǔ)句?

語(yǔ)法:Close [filenumberlist]

???? filenumberlist 參數(shù)為一個(gè)或多個(gè)文件號(hào),若省略 filenumberlist,則將關(guān)閉 Open 語(yǔ)句打開(kāi)的所有活動(dòng)文件。?

說(shuō)明:打開(kāi)文件后,必須在使用完后關(guān)閉文件。

?

3、EOF 函數(shù)?

語(yǔ)法:EOF(filenumber)?

功能:返回一個(gè) Integer,它包含 Boolean 值 True,表明已經(jīng)到達(dá)為 Random 或順序 Input 打開(kāi)的文件的結(jié)尾。

Open "c:\a.txt"? For Input As #1 ‘以讀入方式打開(kāi)c:\a.txt

??? Do While Not EOF(1)? '未到達(dá)結(jié)尾
????????????????? Line Input #1, s1???? '讀入一行,放入s1變量中? ? ? ??
?? ?????? Loop
?????? ?Close #1?


4、LOC 函數(shù)?

語(yǔ)法:LOC(filenumber)?

功能:返回一個(gè) Long,在已打開(kāi)的文件中指定當(dāng)前讀/寫(xiě)位置。?

Dim MyLocation, MyLine?

Open "TESTFILE" For Binary As #1?? ' 打開(kāi)剛創(chuàng)建的文件。

Do While MyLocation < LOF(1)?? ' 循環(huán)至文件尾。?

MyLine = MyLine & Input(1, #1)?? ' 讀入一個(gè)字符到變量中。?

MyLocation = Loc(1)?? ' 取得當(dāng)前位置。? ' 在立即窗口中顯示。??

Debug.Print MyLine : Tab : MyLocation? Loop? Close #1?? ' 關(guān)閉文件。
?

5、Input # 語(yǔ)句??

    語(yǔ)法:Input #filenumber, varlist
    功能:從已打開(kāi)的順序文件中讀出數(shù)據(jù)并將數(shù)據(jù)指定給變量。?(有文字中有不在引號(hào)中的,會(huì)被認(rèn)為是分隔符)
    說(shuō)明:通常用 Write # 將 Input # 語(yǔ)句讀出的數(shù)據(jù)寫(xiě)入文件。為了能夠用 Input # 語(yǔ)句將文件的數(shù)據(jù)正確讀
入到變量中,在將數(shù)據(jù)寫(xiě)入文件時(shí),要使用 Write # 語(yǔ)句而不使用 Print # 語(yǔ)句。使用 Write # 語(yǔ)句
可以確保將各個(gè)單獨(dú)的數(shù)據(jù)域正確分隔開(kāi)。?

6、Line Input # 語(yǔ)句??

    語(yǔ)法:Line Input #filenumber, varname?
    功能:從已打開(kāi)的順序文件中讀出一行并將它分配給 String 變量。?
    說(shuō)明:通常用 Print # 與 Line Input # 語(yǔ)句配合使用。Line Input # 語(yǔ)句一次只從文件中讀出一個(gè)字符,
直到遇到回車(chē)符 (Chr(13)) 或回車(chē)–換行符 (Chr(13) + Chr(10)) 為止?;剀?chē)–換行符將被跳過(guò),
而不會(huì)被附加到字符串上。?
    7、Input 函數(shù)?

語(yǔ)法:Input(number, [#]filenumber),其中number 指定要返回的字符個(gè)數(shù)。?

功能:返回 String,它包含以 Input 或 Binary 方式打開(kāi)的文件中的字符。

說(shuō)明:通常用 Print # 或 Put 將 Input 函數(shù)讀出的數(shù)據(jù)寫(xiě)入文件。Input 函數(shù)只用于以 Input 或

Binary 方式打開(kāi)的文件。

與 Input # 語(yǔ)句不同,Input 函數(shù)返回它所讀出的所有字符,包括逗號(hào)、回車(chē)符、空白列、

換行符、引號(hào)和前導(dǎo)空格等。?

示例:

Dim MyChar,s1

Open "C:\test.txt" For Input As #1

Do While Not EOF(1)?????? ' 循環(huán)至文件尾。

??? MyChar = Input(1, #1)????? ' 讀入一個(gè)字符。

s1=Input(EOF(1), #1)? '一次讀入全部

??? Debug.Print MyChar????? ' 顯示到立即窗口。

Loop

Close #1?

?

8、Write # 語(yǔ)句??

語(yǔ)法:Write #filenumber, [outputlist]?

功能:將數(shù)據(jù)寫(xiě)入順序文件。?

如果省略 outputlist,并在 filenumber 之后加上一個(gè)逗號(hào),則會(huì)將一個(gè)空白行打印到文件中。

多個(gè)表達(dá)式之間可用空白、分號(hào)或逗號(hào)隔開(kāi)??瞻缀头痔?hào)等效。?

與 Print # 語(yǔ)句不同,當(dāng)要將數(shù)據(jù)寫(xiě)入文件時(shí),Write # 語(yǔ)句會(huì)在項(xiàng)目和用來(lái)標(biāo)記字符串的引號(hào)之間插入逗號(hào)。?

    9、Print # 語(yǔ)句?

語(yǔ)法:Print #filenumber, [outputlist]?

outputlist 參數(shù)的設(shè)置如下:

[{Spc(n) | Tab[(n)]}] [expression] [charpos]?

Spc(n) 用來(lái)在輸出數(shù)據(jù)中插入空白字符,而 n 指的是要插入的空白字符數(shù)。

Tab(n) 用來(lái)將插入點(diǎn)定位在某一絕對(duì)列號(hào)上,這里,n 是列號(hào)。使用無(wú)參數(shù)的 Tab 將插入點(diǎn)定位在

下一個(gè)打印區(qū)的起始位置。

expression 要打印的數(shù)值表達(dá)式或字符串表達(dá)式。

charpos 指定下一個(gè)字符的插入點(diǎn)。使用分號(hào)將插入點(diǎn)定位在上一個(gè)顯示字符之后。用 Tab(n) 將

插入點(diǎn)定位在某一絕對(duì)的列號(hào)上,用無(wú)參數(shù)的 Tab 將插入點(diǎn)定位在下一個(gè)打印區(qū)的起始處。如果省略

charpos,則在下一行打印下一個(gè)字符。

?

Open "F:\test.txt" For Output As #1???????? ' 打開(kāi)輸出文件。

Print #1, "This is a test"????????????????? ' 將文本數(shù)據(jù)寫(xiě)入文件。

Print #1,?????????????????????????????????? ' 將空白行寫(xiě)入文件。

Print #1, "Zone 1"; Tab; "Zone 2"?????????? ' 數(shù)據(jù)寫(xiě)入兩個(gè)區(qū)(print zones)。

Print #1, "Hello"; " "; "World"???????????? ' 以空格隔開(kāi)兩個(gè)字符串。

Print #1, Spc(5); "5 leading spaces "?????? ' 在字符串之前寫(xiě)入五個(gè)空格。

Print #1, Tab(10); "Hello"????????????????? ' 將數(shù)據(jù)寫(xiě)在第十列。

讀入文本到數(shù)組

?

Sub test()
??? Dim a()
??? Dim i As Integer
??? x = CreateObject("scripting.FileSystemObject").OpenTextFile("c:\test.txt", 8).Line
??? ReDim a(x)
??? i = 0
??? Open "c:\test.txt" For Input As #1
??????? Do While Not EOF(1)?? '?循環(huán)至文件尾
?????????? i = i + 1
?????????? Line Input #1, a(i)?? ' 讀入一行數(shù)據(jù)并將其賦予某變量
??????? Loop
??? Close #1
End Sub

新跟帖 (共1 條評(píng)論)

查看更多評(píng)論。。。