欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Excel-VBA操作文件四大方法之二
 (三)處理文本文件

1、Open 語(yǔ)句

語(yǔ)法:Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

其中access、lock、reclength為可選參數,一般不用。
mode 指定打開(kāi)文件的方式。有5種:
Input:以輸入方式打開(kāi),即讀取方式。
Output:以輸出方式打開(kāi),即寫(xiě)入方式。
Append:以追加方式打開(kāi),即添加內容到文件末尾。
Binary:以二進(jìn)制方式打開(kāi)。
Random:以隨機方式打開(kāi),如果未指定方式,則以 Random 方式打開(kāi)文件。

filenumber  是一個(gè)有效的文件號,范圍在 1 到 511 之間??梢灾付?,也可使用 FreeFile 函數可得到下一個(gè)可用的文件號。

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

示例:
Open "F:\TEST.txt" For Input As #1  '以輸入方式打開(kāi)
Open "F:\TEST.xls" For Binary As #1  '以二進(jìn)制方式打開(kāi)

2、Close 語(yǔ)句

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

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

示例:
Dim I, FileName
For I = 1 To 3   
    FileName = "TEST" & I    ' 創(chuàng )建文件名。
    Open FileName For Output As #I    ' 打開(kāi)文件。
    Print #I, "This is a test."    ' 將字符串寫(xiě)入文件。
Next I
Close    ' 將三個(gè)已打開(kāi)的文件全部關(guān)閉。

3、Reset 語(yǔ)句

語(yǔ)法:Reset

功能:關(guān)閉所有用 Open 語(yǔ)句打開(kāi)的磁盤(pán)文件。

說(shuō)明:Reset 語(yǔ)句關(guān)閉 Open 語(yǔ)句打開(kāi)的所有活動(dòng)文件,并將文件緩沖區的所有內容寫(xiě)入磁盤(pán)。

示例:
Dim FileNumber
For FileNumber = 1 To 5   
    Open "TEST" & FileNumber For Output As #FileNumber
    Write #FileNumber, "Hello World"    ' 將數據寫(xiě)入文件。
Next FileNumber
Reset    ' 關(guān)閉文件并將緩沖區內的數據寫(xiě)到磁盤(pán)中。

4、FreeFile 函數

語(yǔ)法:FreeFile[(rangenumber)]
      參數 rangenumber指定一個(gè)范圍,以便返回該范圍之內的下一個(gè)可用文件號。指定 0(缺省值)則返回一個(gè)介于 1 – 255 之間的文件號。指定 1 則返回一個(gè)介于 256 – 511 之間的文件號。

功能:提供一個(gè)尚未使用的文件號。

示例:
Dim fnum As Integer

fnum = FreeFile

Open "F:\TEST.txt" For Input As #fnum

Close #fnum


5、EOF 函數

語(yǔ)法:EOF(filenumber)

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

6、LOF 函數

語(yǔ)法:LOF(filenumber)

功能:返回一個(gè) Long,表示用 Open 語(yǔ)句打開(kāi)的文件的大小,該大小以字節為單位。

7、Loc 函數

語(yǔ)法:LOc(filenumber)

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


8、Input # 語(yǔ)句

語(yǔ)法:Input #filenumber, varlist

功能:從已打開(kāi)的順序文件中讀出數據并將數據指定給變量。

說(shuō)明:通常用 Write # 將 Input # 語(yǔ)句讀出的數據寫(xiě)入文件。為了能夠用 Input # 語(yǔ)句將文件的數據正確讀入到變量中,在將數據寫(xiě)入文件時(shí),要使用 Write # 語(yǔ)句而不使用 Print # 語(yǔ)句。使用 Write # 語(yǔ)句可以確保將各個(gè)單獨的數據域正確分隔開(kāi)。

示例:
本示例使用 Input # 語(yǔ)句將文件內的數據讀入兩個(gè)變量中。本示例假設 TESTFILE文件內含數行以 Write # 語(yǔ)句寫(xiě)入的數據;也就是說(shuō),每一行數據中的字符串部分都是用雙引號括起來(lái),而與數字用逗號隔開(kāi),例如,("Hello", 234)。

Dim MyString, MyNumber
Open "TESTFILE" For Input As #1      ' 打開(kāi)輸入文件。
Do While Not EOF(1)       ' 循環(huán)至文件尾。
    Input #1, MyString, MyNumber      ' 將數據讀入兩個(gè)變量。
    Debug.Print MyString, MyNumber      ' 在立即窗口中顯示數據。
Loop
Close #1         ' 關(guān)閉文件。

9、Write # 語(yǔ)句

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

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

說(shuō)明:通常用 Input # 從文件讀出 Write # 寫(xiě)入的數據。
如果省略 outputlist,并在 filenumber 之后加上一個(gè)逗號,則會(huì )將一個(gè)空白行打印到文件中。多個(gè)表達式之間可用空白、分號或逗號隔開(kāi)??瞻缀头痔柕刃?。

用 Write # 將數據寫(xiě)入文件時(shí)將遵循幾個(gè)通用的約定,使得無(wú)論什么區域都可用 Input # 讀出并正確解釋數據:

·在寫(xiě)入數值數據時(shí)總使用句號作為十進(jìn)制分隔符。

·對于 Boolean 類(lèi)型的數據,或者打印 #TRUE# 或者打印 #FALSE#。無(wú)論在什么地區,都不將 True 和 False 這兩個(gè)關(guān)鍵字翻譯出來(lái)。

·使用通用的日期格式將 Date 類(lèi)型的數據寫(xiě)入文件中。當日期或時(shí)間的部件丟失或為零時(shí),只將現有部分寫(xiě)入文件中。

·如果 outputlist 的數據為 Empty,則不將任何數據寫(xiě)入文件。但對 Null 數據,則要寫(xiě)入 #NULL#。

·如果 outputlist 數據為 Null 數據,則將 #NULL# 寫(xiě)入文件中。

·對于 Error 類(lèi)型的數據,輸出看起來(lái)與 #ERROR errorcode# 一樣。無(wú)論在什么地區,都不將關(guān)鍵字 Error 翻譯出來(lái)。
與 Print # 語(yǔ)句不同,當要將數據寫(xiě)入文件時(shí),Write # 語(yǔ)句會(huì )在項目和用來(lái)標記字符串的引號之間插入逗號。沒(méi)有必要在列表中鍵入明確的分界符。Write # 語(yǔ)句在將 outputlist 中的最后一個(gè)字符寫(xiě)入文件后會(huì )插入一個(gè)新行字符,即回車(chē)換行符,(Chr(13) + Chr(10))。

示例:
Open "F:\test.txt" For Output As #1      ' 打開(kāi)輸出文件。
Write #1, "Hello World", 1234      ' 寫(xiě)入以逗號隔開(kāi)的數據。
Write #1,         ' 寫(xiě)入空白行。

Dim MyBool, MyDate, MyNull, MyError
' 賦值 Boolean、Date、Null 及 Error 等。
MyBool = False : MyDate = #February 12, 1969# : MyNull = Null
MyError = CVErr(32767)
' Boolean 數據以 #TRUE# 或 #FALSE# 的格式寫(xiě)入。
' 日期以通用日期格式寫(xiě)入,例如:#1994-07-13# 代表
' 1994 年 1 月 13 日。Null 數據以 #NULL# 格式寫(xiě)入。
' Error 數據以 #ERROR 錯誤代號# 的格式寫(xiě)入。
Write #1, MyBool; " is a Boolean value"
Write #1, MyDate; " is a date"
Write #1, MyNull; " is a null value"
Write #1, MyError; " is an error value"
Close #1    ' 關(guān)閉文件。

我們可以看到寫(xiě)入的內容為:
"Hello World",1234

#FALSE#," is a Boolean value"
#1969-02-12#," is a date"
#NULL#," is a null value"
#ERROR 32767#," is an error value"

10、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ì )被附加到字符串上。

示例:
Dim TextLine
Open "TESTFILE" For Input As #1     ' 打開(kāi)文件。
Do While Not EOF(1)       ' 循環(huán)至文件尾。
    Line Input #1, TextLine      ' 讀入一行數據并將其賦予某變量。
    Debug.Print TextLine      ' 在立即窗口中顯示數據。
Loop
Close #1        ' 關(guān)閉文件。

11、Input 函數

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

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

說(shuō)明:通常用 Print # 或 Put 將 Input 函數讀出的數據寫(xiě)入文件。Input 函數只用于以 Input 或 Binary 方式打開(kāi)的文件。
與 Input # 語(yǔ)句不同,Input 函數返回它所讀出的所有字符,包括逗號、回車(chē)符、空白列、換行符、引號和前導空格等。

示例:
Dim MyChar
Open "f:\test.txt" For Input As #1
Do While Not EOF(1)       ' 循環(huán)至文件尾。
    MyChar = Input(1, #1)      ' 讀入一個(gè)字符。
    Debug.Print MyChar      ' 顯示到立即窗口。
Loop
Close #1

下面這個(gè)函數可以將文本文件的數據一次讀入到一個(gè)字符串(但是若包含中文時(shí)會(huì )出錯,因為一個(gè)中文字占2個(gè)字節)。

Public Function ReadText(FileName As String)

Dim fnum%, isopen As Boolean
On Error GoTo erro
fnum = FreeFile()
Open FileName For Input As #fnum
isopen = True
ReadText = Input(LOF(fnum), fnum)

erro:
    If isopen Then Close #fnum
    If err Then Debug.Print err.Number, err.Description

End Function

12、Print # 語(yǔ)句

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

outputlist 參數的設置如下:
[{Spc(n) | Tab[(n)]}] [expression_r] [charpos]

Spc(n) 用來(lái)在輸出數據中插入空白字符,而 n 指的是要插入的空白字符數。
Tab(n) 用來(lái)將插入點(diǎn)定位在某一絕對列號上,這里,n 是列號。使用無(wú)參數的 Tab 將插入點(diǎn)定位在下一個(gè)打印區的起始位置。
expression_r 要打印的數值表達式或字符串表達式。
charpos 指定下一個(gè)字符的插入點(diǎn)。使用分號將插入點(diǎn)定位在上一個(gè)顯示字符之后。用 Tab(n) 將插入點(diǎn)定位在某一絕對的列號上,用無(wú)參數的 Tab 將插入點(diǎn)定位在下一個(gè)打印區的起始處。如果省略 charpos,則在下一行打印下一個(gè)字符。


功能:將格式化顯示的數據寫(xiě)入順序文件中。

說(shuō)明:通常用 Line Input # 或 Input 讀出 Print # 在文件中寫(xiě)入的數據。

示例:
Open "F:\test.txt" For Output As #1         ' 打開(kāi)輸出文件。
Print #1, "This is a test"                  ' 將文本數據寫(xiě)入文件。
Print #1,                                   ' 將空白行寫(xiě)入文件。
Print #1, "Zone 1"; Tab; "Zone 2"           ' 數據寫(xiě)入兩個(gè)區(print zones)。
Print #1, "Hello"; " "; "World"             ' 以空格隔開(kāi)兩個(gè)字符串。
Print #1, Spc(5); "5 leading spaces "       ' 在字符串之前寫(xiě)入五個(gè)空格。
Print #1, Tab(10); "Hello"                  ' 將數據寫(xiě)在第十列。

' 賦值 Boolean、Date、Null 及 Error 等。
Dim MyBool, MyDate, MyNull, MyError
MyBool = False: MyDate = #2/12/1969#: MyNull = Null
MyError = CVErr(32767)
' True、False、Null 及 Error 會(huì )根據系統的地區設置自動(dòng)轉換格式。
' 日期將以標準的短式日期的格式顯示。
Print #1, MyBool; " is a Boolean value"
Print #1, MyDate; " is a date"
Print #1, MyNull; " is a null value"
Print #1, MyError; " is an error value"
Close #1

以上代碼寫(xiě)入的內容如下:
This is a test

Zone 1        Zone 2
Hello World
     5 leading spaces
         Hello
False is a Boolean value
1969-2-12  is a date
Null is a null value
Error 32767 is an error value

13、Width # 語(yǔ)句

語(yǔ)法:Width #filenumber, width
width 必要。范圍在 0–255 之間的數值表達式,在新的一行開(kāi)始之前,指出在該行上可出現多少字符。如果 width 等于 0,則行的長(cháng)度不受限制。width 的缺省值為 0。

功能:將一個(gè)輸出行的寬度指定給用 Open 語(yǔ)句打開(kāi)的文件。

示例:
Dim I
Open "f:\TESTFILE.txt" For Output As #1
Width #1, 5                                 ' 設置輸出行寬為 5。
For I = 0 To 9                              ' 循環(huán) 10 次。
    Print #1, Chr(48 + I);                  ' 每行輸出五個(gè)字符。
Next I
Close #1

以上代碼寫(xiě)入的內容如下:
01234
56789

 

(四)處理二進(jìn)制文件
打開(kāi)二進(jìn)制文件可以使用Open語(yǔ)句的Random和Binary方式打開(kāi)。二進(jìn)制文件讀寫(xiě)使用Get和Put語(yǔ)句。

1、Put 語(yǔ)句

語(yǔ)法:Put [#]filenumber, [recnumber], varname

recnumber 可選。Variant (Long)。記錄號(Random 方式的文件)或字節數(Binary 方式的文件),指明在此處開(kāi)始寫(xiě)入。

說(shuō)明:通常用 Get 將 Put 寫(xiě)入的文件數據讀出來(lái)。

示例:
Dim num As Long, text As String
num = 12345
text = "a string"
Open "f:\data.bin" For Binary As #1     '打開(kāi)或創(chuàng )建一個(gè)二進(jìn)制文件
Put #1, , num                           '寫(xiě)入4個(gè)字節
Put #1, , text                          '寫(xiě)入8個(gè)字節(字符串長(cháng)為8)
Close #1


2、Get 語(yǔ)句

語(yǔ)法:Get [#]filenumber, [recnumber], varname

recnumber 可選。Variant (Long)。記錄號(Random 方式的文件)或字節數(Binary 方式的文件),以表示在此處開(kāi)始讀出數據。

功能:將一個(gè)已打開(kāi)的磁盤(pán)文件讀入一個(gè)變量之中。

說(shuō)明:通常用 Put 將 Get 讀出的數據寫(xiě)入一個(gè)文件。

示例:讀取以上代碼寫(xiě)入的內容
Dim num As Long, text As String
Open "f:\data.bin" For Binary As #1
Get #1, , num
text = Space$(8)                        '準備8個(gè)字節的字符串
Get #1, , text                          '讀入
Debug.Print num, text
Close #1

在立即窗口可以看到如下內容:
 12345       a string


3、Seek 語(yǔ)句

語(yǔ)法:Seek [#]filenumber, position
其中position 為介于 1~ 2,147,483,647(相當于 2^31 – 1)之間的數字,指出下一個(gè)讀寫(xiě)操作將要發(fā)生的位置。

功能:在 Open 語(yǔ)句打開(kāi)的文件中,設置下一個(gè)讀/寫(xiě)操作的位置。

說(shuō)明:可以用Seek語(yǔ)句指定Get語(yǔ)句的讀取位置,但在 Get 及 Put 語(yǔ)句中指定的記錄號將覆蓋由 Seek 語(yǔ)句指定的文件位置。

示例:
Dim MaxSize, NextChar, MyChar
Open "TESTFILE" For Input As #1     
MaxSize = LOF(1)       ' 取得文件的總字符數。
' 用循環(huán)讀入所有記錄,但是從最后的記錄開(kāi)始往前讀。
For NextChar = MaxSize To 1 Step -1   
    Seek #1, NextChar      ' 設置讀寫(xiě)位置。
    MyChar = Input(1, #1)      ' 讀入一字符。
Next NextChar
Close #1  

4、Seek 函數

語(yǔ)法:Seek(filenumber)

功能:返回一個(gè) Long,在 Open 語(yǔ)句打開(kāi)的文件中指定當前的讀/寫(xiě)位置。

說(shuō)明:在使用Get語(yǔ)句讀取文件時(shí),必須用LOF函數來(lái)判斷是否到達文件末尾,而不是用EOF函數??梢允褂肧eek函數判斷當前位置,然后與LOF的值比較。

示例:
Do While Seek(1) < LOF(1)
   '繼續讀取
   ......
Loop

(五)總結

      VBA語(yǔ)句的文件操作涵蓋了文件操作的絕大部分內容,很多函數的使用也很簡(jiǎn)單,一般的文件讀寫(xiě)也非常方便,特別是對文本文件。但對于復雜的文件讀寫(xiě),代碼的結構和維護性都不好。因此在VB6之后,微軟引入了FileSystemObject對象模型,提供了面向對象的類(lèi)庫,來(lái)操作驅動(dòng)器、文件夾和文件。但對于二進(jìn)制文件的操作,目前還只能用VBA語(yǔ)句。
      Excel文件本身就是二進(jìn)制文件,它使用的文件格式叫做BIFF(Binary Interchange File Format),即二進(jìn)制可交換文件格式(但2007開(kāi)始使用OOXML格式)。關(guān)于其內部的結構,本人也在研究中。以二進(jìn)制結構打開(kāi)Excel文件,不但可以讀取其表格中的數據,還可以讀取其所有的信息(包括密碼)。注意,以Open語(yǔ)句打開(kāi)文件,并不是我們通常的雙擊一個(gè)文件打開(kāi)顯示到屏幕上,而是將其存放在磁盤(pán)上的數據讀入到緩沖區,不是可視化的打開(kāi)。這種打開(kāi)是不需要密碼的,即使你的Excel文件設置了打開(kāi)密碼,還是照打開(kāi)不誤,這也正是Excel文件不安全的根源所在。我以前發(fā)過(guò)一篇關(guān)于破解的文章,里面破解VBA工程密碼的方法就是用二進(jìn)制替換。由于論壇不讓討論破解的話(huà)題,這里就不再詳細分析代碼了,感興趣的請自行研究。當然,Excel的其他密碼也是可類(lèi)似破解的,前提是你必須十分了解Excel的內部結構,知道密碼放在哪里,才能替換。知道的解密的方法,自然可以針對性的改進(jìn)加密的方法。好了,這里就不再羅嗦了,如果對Excel的內部結構感興趣,可以先看這篇文章,看懂再說(shuō)。
 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VB中Print #語(yǔ)句的功能及用法
轉貼:VB 讀寫(xiě)文本文檔
VBA函數參考——文件處理函數
VBA代碼如何打開(kāi)順序文件,又如何讀取順序文件
2005年至2012年全國計算機二級考試真題及答案
VB open語(yǔ)句用法_藍色的天空
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久