天天看點

VBA 讀取/寫入文本檔案

1、Open 語句 

打開方式有 

Input:以讀取方式打開。

Output:以寫入方式打開。

Append:以追加方式,即添加内容到檔案末尾打開。

Binary:以二進制方式打開。

Random:以随機方式打開,如果未指定方式,則以 Random 方式打開檔案。

 Open pathname For mode As [#]filenumber

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

filenumber  是一個有效的檔案号,範圍在 1 到 511 之間。

如果 pathname 指定的檔案不存在,那麼,在用 Append、Binary、Output、或 Random 方式打開檔案時,可以建立這一檔案。 

2、Close 語句 

文法:Close [filenumberlist]

     filenumberlist 參數為一個或多個檔案号,若省略 filenumberlist,則将關閉 Open 語句打開的所有活動檔案。 

說明:打開檔案後,必須在使用完後關閉檔案。

3、EOF 函數 

文法:EOF(filenumber) 

功能:傳回一個 Integer,它包含 Boolean 值 True,表明已經到達為 Random 或順序 Input 打開的檔案的結尾。

Open "c:\a.txt"  For Input As #1 ‘以讀入方式打開c:\a.txt

    Do While Not EOF(1)  '未到達結尾

                  Line Input #1, s1     '讀入一行,放入s1變量中        

          Loop

        Close #1 

4、LOC 函數 

文法:LOC(filenumber) 

功能:傳回一個 Long,在已打開的檔案中指定目前讀/寫位置。 

Dim MyLocation, MyLine 

Open "TESTFILE" For Binary As #1   ' 打開剛建立的檔案。

Do While MyLocation < LOF(1)   ' 循環至檔案尾。 

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

MyLocation = Loc(1)   ' 取得目前位置。  ' 在立即視窗中顯示。  

Debug.Print MyLine : Tab : MyLocation  Loop  Close #1   ' 關閉檔案。

5、Input # 語句  

文法:Input #filenumber, varlist      
功能:從已打開的順序檔案中讀出資料并将資料指定給變量。 (有文字中有不在引号中的,會被認為是分隔符)      
說明:通常用 Write # 将 Input # 語句讀出的資料寫入檔案。為了能夠用 Input # 語句将檔案的資料正确讀
          入到變量中,在将資料寫入檔案時,要使用 Write # 語句而不使用 Print # 語句。使用 Write # 語句
          可以確定将各個單獨的資料域正确分隔開。       

6、Line Input # 語句  

文法:Line Input #filenumber, varname       
功能:從已打開的順序檔案中讀出一行并将它配置設定給 String 變量。       
說明:通常用 Print # 與 Line Input # 語句配合使用。Line Input # 語句一次隻從檔案中讀出一個字元,
          直到遇到回車符 (Chr(13)) 或回車–換行符 (Chr(13) + Chr(10)) 為止。回車–換行符将被跳過,
          而不會被附加到字元串上。        
文法:Input(number, [#]filenumber),其中number 指定要傳回的字元個數。  功能:傳回 String,它包含以 Input 或 Binary 方式打開的檔案中的字元。 說明:通常用 Print # 或 Put 将 Input 函數讀出的資料寫入檔案。Input 函數隻用于以 Input 或 Binary 方式打開的檔案。 與 Input # 語句不同,Input 函數傳回它所讀出的所有字元,包括逗号、回車符、空白列、 換行符、引号和前導空格等。  示例: Dim MyChar,s1 Open "C:\test.txt" For Input As #1 Do While Not EOF(1)       ' 循環至檔案尾。     MyChar = Input(1, #1)      ' 讀入一個字元。 s1=Input(EOF(1), #1)  '一次讀入全部     Debug.Print MyChar      ' 顯示到立即視窗。 Loop Close #1 
  8、Write # 語句  
文法:Write #filenumber, [outputlist] 

功能:将資料寫入順序檔案。 

如果省略 outputlist,并在 filenumber 之後加上一個逗号,則會将一個空白行列印到檔案中。

多個表達式之間可用空白、分号或逗号隔開。空白和分号等效。 

與 Print # 語句不同,當要将資料寫入檔案時,Write # 語句會在項目和用來标記字元串的引号之間插入逗号。  
      
文法:Print #filenumber, [outputlist] 

     outputlist 參數的設定如下:

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

     Spc(n) 用來在輸出資料中插入空白字元,而 n 指的是要插入的空白字元數。

     Tab(n) 用來将插入點定位在某一絕對列号上,這裡,n 是列号。使用無參數的 Tab 将插入點定位在

  下一個列印區的起始位置。

     expression 要列印的數值表達式或字元串表達式。

     charpos 指定下一個字元的插入點。使用分号将插入點定位在上一個顯示字元之後。用 Tab(n) 将

  插入點定位在某一絕對的列号上,用無參數的 Tab 将插入點定位在下一個列印區的起始處。如果省略

  charpos,則在下一行列印下一個字元。

  

Open "F:\test.txt" For Output As #1         ' 打開輸出檔案。

Print #1, "This is a test"                  ' 将文本資料寫入檔案。

Print #1,                                   ' 将空白行寫入檔案。

Print #1, "Zone 1"; Tab; "Zone 2"           ' 資料寫入兩個區(print zones)。

Print #1, "Hello"; " "; "World"             ' 以空格隔開兩個字元串。

Print #1, Spc(5); "5 leading spaces "       ' 在字元串之前寫入五個空格。

Print #1, Tab(10); "Hello"                  ' 将資料寫在第十列。
      

讀入文本到數組

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)   '  循環至檔案尾

           i = i + 1

           Line Input #1, a(i)   ' 讀入一行資料并将其賦予某變量

        Loop

    Close #1

End Sub