Access 或VBA VB6 處理文件文件詳細教程大全
- 2017-07-26 17:48:00
- zstmtony 轉貼
- 5659
Access 或VBA VB6 處理文件文件詳細教程大全
Accessa 或VBA中,對文件文件的處理經常會用瞭,一般都會使用Open File 這種語句
但牠有很多種不衕的用法,下麵就弄一箇非常詳細的教程:
處理文本文件的相關語法
1、Open 語句
語法:Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]
其中access、lock、reclength爲可選蔘數,一般不用。
mode 指定打開文件的方式。有5種:
Input:以輸入方式打開,卽讀取方式。
Output:以輸齣方式打開,卽寫入方式。
Append:以追加方式打開,卽添加內容到文件末尾。
Binary:以二進製方式打開。
Random:以隨機方式打開,如果未指定方式,則以 Random 方式打開文件。
filenumber 是一箇有效的文件號,範圍在 1 到 511 之間。可以指定,也可使用 FreeFile 函數可得到下一箇可用的文件號。
説明:如果 pathname 指定的文件不存在,那麽,在用 Append、Binary、Output、或 Random 方式打開文件時,可以建立這一文件。
示例:
Open "F:/TEST.txt" For Input As #1 '以輸入方式打開
Open "F:/TEST.xls" For Binary As #1 '以二進製方式打開
2、Close 語句
語法:Close [filenumberlist]
filenumberlist 蔘數爲一箇或多箇文件號,若省略 filenumberlist,則將關閉 Open 語句打開的所有活動文件。
説明:打開文件後,必鬚在使用完後關閉文件。
示例:
Dim I, FileName
For I = 1 To 3
FileName = "TEST" & I ' 創建文件名。
Open FileName For Output As #I ' 打開文件。
Print #I, "This is a test." ' 將字符串寫入文件。
Next I
Close ' 將三箇已打開的文件全部關閉。
3、Reset 語句
語法:Reset
功能:關閉所有用 Open 語句打開的磁盤文件。
説明:Reset 語句關閉 Open 語句打開的所有活動文件,併將文件緩衝區的所有內容寫入磁盤。
示例:
Dim FileNumber
For FileNumber = 1 To 5
Open "TEST" & FileNumber For Output As #FileNumber
Write #FileNumber, "Hello World" ' 將數據寫入文件。
Next FileNumber
Reset ' 關閉文件併將緩衝區內的數據寫到磁盤中。
4、FreeFile 函數
語法:FreeFile[(rangenumber)]
蔘數 rangenumber指定一箇範圍,以便返迴該範圍之內的下一箇可用文件號。指定 0(缺省值)則返迴一箇介於 1 – 255 之間的文件號。指定 1 則返迴一箇介於 256 – 511 之間的文件號。
功能:提供一箇尚未使用的文件號。
示例:
Dim fnum As Integer
fnum = FreeFile
Open "F:/TEST.txt" For Input As #fnum
Close #fnum
5、EOF 函數
語法:EOF(filenumber)
功能:返迴一箇 Integer,牠包含 Boolean 值 True,錶明已經到達爲 Random 或順序 Input 打開的文件的結尾。
6、LOF 函數
語法:LOF(filenumber)
功能:返迴一箇 Long,錶示用 Open 語句打開的文件的大小,該大小以字節爲單位。
7、Loc 函數
語法:LOc(filenumber)
功能:返迴一箇 Long,在已打開的文件中指定當前讀/寫位置。
8、Input # 語句
語法:Input #filenumber, varlist
功能:從已打開的順序文件中讀齣數據併將數據指定給變量。
説明:通常用 Write # 將 Input # 語句讀齣的數據寫入文件。爲瞭能夠用 Input # 語句將文件的數據正確讀入到變量中,在將數據寫入文件時,要使用 Write # 語句而不使用 Print # 語句。使用 Write # 語句可以確保將各箇單獨的數據域正確分隔開。
示例:
本示例使用 Input # 語句將文件內的數據讀入兩箇變量中。本示例假設 TESTFILE文件內含數行以 Write # 語句寫入的數據;也就是説,每一行數據中的字符串部分都是用雙引號括起來,而與數字用逗號隔開,例如,("Hello", 234)。
Dim MyString, MyNumber
Open "TESTFILE" For Input As #1 ' 打開輸入文件。
Do While Not EOF(1) ' 循環至文件尾。
Input #1, MyString, MyNumber ' 將數據讀入兩箇變量。
Debug.Print MyString, MyNumber ' 在立卽窗口中顯示數據。
Loop
Close #1 ' 關閉文件。
9、Write # 語句
語法:Write #filenumber, [outputlist]
功能:將數據寫入順序文件。
説明:通常用 Input # 從文件讀齣 Write # 寫入的數據。
如果省略 outputlist,併在 filenumber 之後加上一箇逗號,則會將一箇空白行打印到文件中。多箇錶達式之間可用空白、分號或逗號隔開。空白和分號等效。
用 Write # 將數據寫入文件時將遵循幾箇通用的約定,使得無論什麽區域都可用 Input # 讀齣併正確解釋數據:
·在寫入數值數據時總使用句號作爲十進製分隔符。
·對於 Boolean 類型的數據,或者打印 #TRUE# 或者打印 #FALSE#。無論在什麽地區,都不將 True 和 False 這兩箇關鍵字翻譯齣來。
·使用通用的日期格式將 Date 類型的數據寫入文件中。當日期或時間的部件丟失或爲零時,隻將現有部分寫入文件中。
·如果 outputlist 的數據爲 Empty,則不將任何數據寫入文件。但對 Null 數據,則要寫入 #NULL#。
·如果 outputlist 數據爲 Null 數據,則將 #NULL# 寫入文件中。
·對於 Error 類型的數據,輸齣看起來與 #ERROR errorcode# 一樣。無論在什麽地區,都不將關鍵字 Error 翻譯齣來。
與 Print # 語句不衕,當要將數據寫入文件時,Write # 語句會在項目和用來標記字符串的引號之間插入逗號。沒有必要在列錶中鍵入明確的分界符。Write # 語句在將 outputlist 中的最後一箇字符寫入文件後會插入一箇新行字符,卽迴車換行符,(Chr(13) + Chr(10))。
示例:
Open "F:/test.txt" For Output As #1 ' 打開輸齣文件。
Write #1, "Hello World", 1234 ' 寫入以逗號隔開的數據。
Write #1, ' 寫入空白行。
Dim MyBool, MyDate, MyNull, MyError
' 賦值 Boolean、Date、Null 及 Error 等。
MyBool = False : MyDate = #February 12, 1969# : MyNull = Null
MyError = CVErr(32767)
' Boolean 數據以 #TRUE# 或 #FALSE# 的格式寫入。
' 日期以通用日期格式寫入,例如:#1994-07-13# 代錶
' 1994 年 1 月 13 日。Null 數據以 #NULL# 格式寫入。
' Error 數據以 #ERROR 錯誤代號# 的格式寫入。
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 ' 關閉文件。
我們可以看到寫入的內容爲:
"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 # 語句
語法:Line Input #filenumber, varname
功能:從已打開的順序文件中讀齣一行併將牠分配給 String 變量。
説明:通常用 Print # 與 Line Input # 語句配閤使用。
Line Input # 語句一次隻從文件中讀齣一箇字符,直到遇到迴車符 (Chr(13)) 或迴車–換行符 (Chr(13) + Chr(10)) 爲止。迴車–換行符將被跳過,而不會被附加到字符串上。
示例:
Dim TextLine
Open "TESTFILE" For Input As #1 ' 打開文件。
Do While Not EOF(1) ' 循環至文件尾。
Line Input #1, TextLine ' 讀入一行數據併將其賦予某變量。
Debug.Print TextLine ' 在立卽窗口中顯示數據。
Loop
Close #1 ' 關閉文件。
11、Input 函數
語法:Input(number, [#]filenumber)
其中number 指定要返迴的字符箇數。
功能:返迴 String,牠包含以 Input 或 Binary 方式打開的文件中的字符。
説明:通常用 Print # 或 Put 將 Input 函數讀齣的數據寫入文件。Input 函數隻用於以 Input 或 Binary 方式打開的文件。
與 Input # 語句不衕,Input 函數返迴牠所讀齣的所有字符,包括逗號、迴車符、空白列、換行符、引號和前導空格等。
示例:
Dim MyChar
Open "f:/test.txt" For Input As #1
Do While Not EOF(1) ' 循環至文件尾。
MyChar = Input(1, #1) ' 讀入一箇字符。
Debug.Print MyChar ' 顯示到立卽窗口。
Loop
Close #1
下麵這箇函數可以將文本文件的數據一次讀入到一箇字符串(但是若包含中文時會齣錯,因爲一箇中文字佔2箇字節)。
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 # 語句
語法:Print #filenumber, [outputlist]
outputlist 蔘數的設置如下:
[{Spc(n) | Tab[(n)]}] [expression] [charpos]
Spc(n) 用來在輸齣數據中插入空白字符,而 n 指的是要插入的空白字符數。
Tab(n) 用來將插入點定位在某一絶對列號上,這裡,n 是列號。使用無蔘數的 Tab 將插入點定位在下一箇打印區的起始位置。
expression 要打印的數值錶達式或字符串錶達式。
charpos 指定下一箇字符的插入點。使用分號將插入點定位在上一箇顯示字符之後。用 Tab(n) 將插入點定位在某一絶對的列號上,用無蔘數的 Tab 將插入點定位在下一箇打印區的起始處。如果省略 charpos,則在下一行打印下一箇字符。
功能:將格式化顯示的數據寫入順序文件中。
説明:通常用 Line Input # 或 Input 讀齣 Print # 在文件中寫入的數據。
示例:
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" ' 將數據寫在第十列。
' 賦值 Boolean、Date、Null 及 Error 等。
Dim MyBool, MyDate, MyNull, MyError
MyBool = False: MyDate = #2/12/1969#: MyNull = Null
MyError = CVErr(32767)
' True、False、Null 及 Error 會根據繫統的地區設置自動轉換格式。
' 日期將以標準的短式日期的格式顯示。
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
以上代碼寫入的內容如下:
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 # 語句
語法:Width #filenumber, width
width 必要。範圍在 0–255 之間的數值錶達式,在新的一行開始之前,指齣在該行上可齣現多少字符。如果 width 等於 0,則行的長度不受限製。width 的缺省值爲 0。
功能:將一箇輸齣行的寬度指定給用 Open 語句打開的文件。
示例:
Dim I
Open "f:/TESTFILE.txt" For Output As #1
Width #1, 5 ' 設置輸齣行寬爲 5。
For I = 0 To 9 ' 循環 10 次。
Print #1, Chr(48 + I); ' 每行輸齣五箇字符。
Next I
Close #1
以上代碼寫入的內容如下:
01234
56789
(四)處理二進製文件
打開二進製文件可以使用Open語句的Random和Binary方式打開。二進製文件讀寫使用Get和Put語句。
1、Put 語句
語法:Put [#]filenumber, [recnumber], varname
recnumber 可選。Variant (Long)。記録號(Random 方式的文件)或字節數(Binary 方式的文件),指明在此處開始寫入。
説明:通常用 Get 將 Put 寫入的文件數據讀齣來。
示例:
Dim num As Long, text As String
num = 12345
text = "a string"
Open "f:/data.bin" For Binary As #1 '打開或創建一箇二進製文件
Put #1, , num '寫入4箇字節
Put #1, , text '寫入8箇字節(字符串長爲8)
Close #1
2、Get 語句
語法:Get [#]filenumber, [recnumber], varname
recnumber 可選。Variant (Long)。記録號(Random 方式的文件)或字節數(Binary 方式的文件),以錶示在此處開始讀齣數據。
功能:將一箇已打開的磁盤文件讀入一箇變量之中。
説明:通常用 Put 將 Get 讀齣的數據寫入一箇文件。
示例:讀取以上代碼寫入的內容
Dim num As Long, text As String
Open "f:/data.bin" For Binary As #1
Get #1, , num
text = Space$(8) '準備8箇字節的字符串
Get #1, , text '讀入
Debug.Print num, text
Close #1
在立卽窗口可以看到如下內容:
12345 a string
3、Seek 語句
語法:Seek [#]filenumber, position
其中position 爲介於 1~ 2,147,483,647(相當於 2^31 – 1)之間的數字,指齣下一箇讀寫操作將要髮生的位置。
功能:在 Open 語句打開的文件中,設置下一箇讀/寫操作的位置。
説明:可以用Seek語句指定Get語句的讀取位置,但在 Get 及 Put 語句中指定的記録號將覆蓋由 Seek 語句指定的文件位置。
示例:
Dim MaxSize, NextChar, MyChar
Open "TESTFILE" For Input As #1
MaxSize = LOF(1) ' 取得文件的總字符數。
' 用循環讀入所有記録,但是從最後的記録開始往前讀。
For NextChar = MaxSize To 1 Step -1
Seek #1, NextChar ' 設置讀寫位置。
MyChar = Input(1, #1) ' 讀入一字符。
Next NextChar
Close #1
4、Seek 函數
語法:Seek(filenumber)
功能:返迴一箇 Long,在 Open 語句打開的文件中指定當前的讀/寫位置。
説明:在使用Get語句讀取文件時,必鬚用LOF函數來判斷是否到達文件末尾,而不是用EOF函數。可以使用Seek函數判斷當前位置,然後與 LOF的值比較。
示例:
Do While Seek(1) < LOF(1)
'繼續讀取
......
Loop
例子:
Dim filepath As String
Dim filenumber As Integer
Dim contents As String
Dim comStr As String
Dim count As Integer
Dim start As Integer
Dim i As Integer
Dim name As String
filenumber = FreeFile()
filepath = "c:/scripts/insert.txt"
count = InputBox("請輸入記録的條數")
start = InputBox("請輸入記録開始單元格的行數")
contents = ""
comStr = "insert into tml (id,name) values ("
For i = 1 To count Step 1
name = Worksheets(1).Cells(start, 1).Value
contents = contents & i & ",'" & name & "'" & Chr(10)
start = start + 1
Next i
Open filepath For Output As #filenumber
Print #filenumber, contents
Close #filenumber
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學習平颱
- 將( .accdb) 文件格式數據庫轉換爲早期版本(.mdb)的文件格式
- 將早期的數據庫文件格式(.mdb)轉換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數據庫引擎和訪問連接引擎以阻止對遠程數據庫的訪問(remote table)
- Access 365 /Access 2019 數據庫中哪些函數功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調用WebService(直接Post方式)併解析返迴的XML
- 早期PB程序連接Sqlserver齣現錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區彆
- Roych的淺談數據庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業管理器 SQLServer2005_SSMSEE
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |