VBA從順序文件中讀取字符

2021-12-08 14:32 更新

假設你的程序需要檢查文件Autoexec.bat里出現(xiàn)了多少個冒號,你可以使用函數(shù)Input來返回特定的字符數(shù),而不必讀取整行。接下來,If語句用來比較獲取的字符和你尋找的字符。在寫過程之前,我們來看看函數(shù)Input的語法:

Input(number, [#]filenumber)

Input函數(shù)的兩個參數(shù)都是必須的,number明確你要讀取的字符數(shù),而filenumber是Open語句用來打開文件的同一個數(shù)字。Input函數(shù)返回所有讀取的字符,包括逗號,回車,文件結束字符,引號和前導空格。


1. 在SeqFile模塊里輸入下述過程Colons:

Sub Colons()
Dim counter As Integer
Dim char As String
counter = 0
Open "C:\Autoexec.bat" For Input As #1
Do While Not EOF(1)
char = Input(1, #1)
If char = ":" Then
counter = counter + 1
End If
Loop
If counter <> 0 Then
MsgBox "Characters found: " & counter
Else
MsgBox "The specified character has not been found."
End If
Close #1
End Sub

2. 逐句執(zhí)行該過程


3. 將冒號換成其它你想尋找的字符并且重新執(zhí)行該程序。Input函數(shù)允許你返回順序文件的任何字符。如果你使用VB函數(shù)LOF作為Input函數(shù)的第一個參數(shù)時,你將能夠快速地讀取順序文件里的內(nèi)容,而不需要在整個文件上循環(huán)。LOF函數(shù)返回一個文件上的字節(jié)數(shù)。每個字節(jié)對應了文本文件里的一個字符。過程ReadAll將文件System.ini的內(nèi)容讀取到立即窗口里:


除了將文件內(nèi)容打印到立即窗口之外,你還可以將其讀取到一個文本框并且放置到工作表中去(見圖8-2):

Sub WriteToTextBox()
Dim mysheet As Worksheet
Set mysheet = ActiveWorkbook.Worksheets(1)
On Error GoTo CloseFile
Open "C:\WINNT\System.ini" For Input As #1
mysheet.Shapes(1).Select
Selection.Characters.Text = Input(LOF(1), #1)
CloseFile:
Close #1
End Sub



圖8-2 文件TDate.ini(原文為System.ini)的內(nèi)容顯示在工作表中的文本框里


在你運行上面的程序之前,你得在工作表里畫一個文本框。注意,On Error GoTo CloseFile語句激活錯誤捕捉,如果錯誤在程序的執(zhí)行過程中發(fā)生了,就會立即跳到CloseFile標簽處,Close #1

語句無論有無錯誤發(fā)生都會被執(zhí)行。






以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號