VBA使用FileSystemObject將讀取或?qū)懭胛谋?docx_第1頁
VBA使用FileSystemObject將讀取或?qū)懭胛谋?docx_第2頁
VBA使用FileSystemObject將讀取或?qū)懭胛谋?docx_第3頁
VBA使用FileSystemObject將讀取或?qū)懭胛谋?docx_第4頁
VBA使用FileSystemObject將讀取或?qū)懭胛谋?docx_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

VBA使用FileSystemObject將讀取或?qū)懭胛谋疚募?一) 分類: VBA 2010-08-12 11:40 1211人閱讀 評論(0) 收藏 舉報 有時,我們需要將一個文本文件中的數(shù)據(jù)讀取到Excel單元格中,或?qū)⒅付▎卧竦膬?nèi)容按指定的格式導(dǎo)出到文本文件中,這時,我們就需要使用Scripting.FileSystemObject對象來進(jìn)行操作。在接下來的幾篇里我們介紹如何使用FileSystemObject對象操作文本文件的。工欲善其事,必先利其器,那么我們就先花幾篇文章來詳細(xì)介紹下FileSystemObject對象。 一、如何創(chuàng)建FileSystemObject對象 在VBA中,是通過CreateObject函數(shù)返回FileSystemObject對象。 示例:Dim fso As ObjectSet fso=CreateObject(Scripting.FileSystemObject) 二、FileSystemObject主要方法介紹 1、CreateTextFile方法:用于創(chuàng)建一個指定文件名,并返回一個可操作的TextStream對象。 語法:object.CreateTextFile(filename,overwrite,unicode)參數(shù)說明object必需的。為一個FileSystemObject對象的名字filename必需的,一個帶路徑的字符串表達(dá)式,為創(chuàng)建的文件overwrite可選的。Boolean值,如果為True表示覆蓋已存在的文件,F(xiàn)alse表示不能覆蓋。默認(rèn)值為False。unicode可選的。Boolean值,表示文件是作為一個Unicode文件創(chuàng)建的還是作為一個ASCII文件創(chuàng)建的。如果為True則表示作為Unicode文件創(chuàng)建,F(xiàn)alse表示作為ASCII文件創(chuàng)建。默認(rèn)值為False。 示例1:在C:/FSOTest/中創(chuàng)建一個名為testFile的文本文件,并寫入一行“CreateTextFile Test”:Sub CreateFile() Dim sFile As Object, FSO As Object Set FSO = CreateObject(Scripting.FileSystemObject) Set sFile = FSO.CreateTextFile(C:/FSOTest/TestFile.txt,True) sFile.WriteLine (CreateTextFile Test) sFile.Close Set sFile = Nothing Set FSO = NothingEnd Sub 2、DeleteFile方法:用于刪除一個指定的文件。如果指定的文件不存在,則返回一個錯誤信息。 語法:object.DeleteFile(filespec,force)參數(shù)說明object必需的。為一個FileSystemObject對象filespec必需的。要刪除文件的名字??梢栽谧詈蟮穆窂讲考邪ㄅ浞鹒orce可選的。Boolean值,如果要刪除具有只讀屬性設(shè)置的文件,則為True。如果不能刪除具有只讀屬性設(shè)置的文件,則為False。默認(rèn)值為False 示例2:刪除示例1中創(chuàng)建的文本文件。Sub DeleteFile() Dim fso As Object Set fso = CreateObject(Scripting.FileSystemObject) fso.DeleteFile (C:/FSOTest/TestFile.txt)End Sub 3、FileExists方法:判斷指定的文件是否存在。如果存在,則返回True,若不存在,則返回False 語法:object.FileExists(filespec)參數(shù)說明object必需的。為一個FileSystemObject對象filespec必需的。要確定是否存在的文件名。如果認(rèn)為文件不在當(dāng)前文件夾中,必須提供一個帶完整的路徑說明。 示例3:判斷“C:/FSOTest/”中是否存在文件“testfile.txt”:Sub FileExist() Dim fso As Object, blnExist As Boolean Set fso = CreateObject(Scripting.FileSystemObject) blnExist = fso.FileExists(C:/FSOTest/testfile.txt) MsgBox blnExistEnd Sub 4、OpenTextFile方法:打開一個指定的文件并返回一個TextStream對象,該對象可能于對文件進(jìn)行讀操作或追加操作。 語法:object.OpenTextFile(filename,iomode,create,format)參數(shù)說明object必需的。始終是一個 FileSystemObject 的名字filename必需的。為一個文件名,包含完整路徑說明iomode可選的。表示輸入/輸出方式??蔀閮蓚€常數(shù)之一:ForReading或 ForAppending。create可選的。Boolean 值,它表示如果指定的 filename 不存在是否可以創(chuàng)建一個新文件。如果創(chuàng)建新文件,其值為 True。若不創(chuàng)建文件其值為 False。缺省值為 False。format可選的。三種 Tristate 值之一,用于指示打開文件的格式。如果省略,則文件以 ASCII 格式打開。 參數(shù)iomode可以設(shè)置為以下值:常數(shù)值說明ForReading1打開一個只讀文件。不能對此文件進(jìn)行寫操作ForWriting2打開一個可讀寫操作的文件,并刪除原有文本內(nèi)容ForAppending8打開一個文件并寫到文件的尾部 參數(shù)format可以設(shè)置為以下值:常數(shù)值說明TristateUseDefault-2使用系統(tǒng)缺省打開文件TristateTrue-1以Unicode格式打開文件TristateFalse0以ASCII格式打開文件 示例4:本例說明了使用OpenTextFile方法打開testfile.txt文件,并添加文字“OpenTextFile Test”:Sub OpenTextFile() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending, TristateFalse) sFile.Write OpenTextFile Test sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub下一節(jié)VBA使用FileSystemObject將讀取或?qū)懭胛谋疚募?二) 分類: VBA 2010-08-12 11:42 951人閱讀 評論(0) 收藏 舉報 在上一節(jié)“VBA使用FileSystemObject將讀取或?qū)懭胛谋疚募?一)”中我們詳細(xì)介紹了如何創(chuàng)建一個FileSystemObject對象及其對象。那么,在這一節(jié)里,將詳細(xì)介紹FileSystemObject對象在創(chuàng)建或打開文本文件后返回的TextStream對象的一些屬性及方法。 三、FileSystemObject對象返回的TextStream對象的屬性及方法說明: 創(chuàng)建TextStream對象示例:Dim sFile As Object, fso As ObjectSet fso = CreateObject(Scripting.FileSystemObject)Set sFile = fso.CreateTextFile(C:/TestFile.txt) 示例中的sFile便為TextStream對象。 (一)TextStream屬性: 1、Line屬性:只讀屬性,返回一個TextStream文件中的當(dāng)前行號。文件初次打開后,在寫任何東西之彰,Line的值為1。 語法:object.Line 2、AtEndOfStream屬性:只讀屬性,如果文件指針在TextStream文件末尾,則返回True;否則返回False。 語法:object.AtEndOfStream 3、AtEndOfLine屬性:只讀屬性,如果文件指針在TextStream文件行尾標(biāo)記的前面,則返回True;否則返回False。 語法:object.AtEndOfLine (二)TextStream方法: 1、WriteLine方法:寫入一個指定的字符和換行符到一個TextStream文件中。 語法:object.WriteLine(string)Object:必需的。表示一個TextStream對象的名字。string:可選的。要寫入文件的正文。如果省略,一個換行符被寫入文件中。 示例:打開一個文本文件并在文本文件中寫入一些字符。Sub WriteLine() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending, TristateFalse) sFile.WriteLine WriteLine Test sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 2、Write方法:寫一個指定的字符串到一個TextStream文件中。指定的字符串被寫入到文件中,在每個字符串之間沒有插入空格或字符。使用WriteLine方法寫入一個換行符或一個以換行符為結(jié)尾的字符串。 語法:object.Write(string)object:必需的。為一個TextStream對象的名字。string:必需的。要寫到文件中的字符串。 示例:下列代碼將一個字符串寫入到文本文件中,并實(shí)現(xiàn)與WriteLine方法相同的效果,即加入空格或換行符。Sub WriteTest() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending, TristateFalse) sFile.Write Write Test & vbTab & vbCrLf 同時加入一個Tab位及一個換行符 sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 3、ReadLine方法:從一個TextStream文件讀取一整行(到換行符但不包括換行符)并返回得到的字符串。 語法:string=object.ReadLinestring:返回的字符串。object:一個TextStream對象。 示例:打開一個文本文件,并讀取內(nèi)容。Sub ReadLine() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForReading) MsgBox sFile.ReadLine sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 4、Read方法:從一個TextStream文件中讀取指定數(shù)量的字符并返回得到的字符串。 語法:object.Read(characters)object:必需的。表示為一個TextStream對象的名字。characters:必需的。從文件中要讀取的字符數(shù)。 示例:從一個打開的文本文件中讀取5個字符。Sub ReadTest() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForReading) MsgBox sFile.Read(5) sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 5、Close方法:關(guān)閉一個打開的TextStream文件。 語法:object.Close 6、WriteBlankLines方法:寫入指定數(shù)量的換行符到一個TextStream文件中。 語法:object.WriteBlankLines(lines)object:必需的。指一個TextStream對象的名字。lines:必需的。要寫入的換行符數(shù)量。 示例:在一個打開的文本文件中寫入兩個空行。Sub WriteBlankLines() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending) sFile.WriteBlankLines (2) sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 7、SkipLine方法:當(dāng)讀一個TextStream文件時跳過下一行。跳過一個是指讀取放棄一行中的所有字符,一直到并包括該行的換行符。如果讀的文件沒有打開,則產(chǎn)生一個錯誤。語法:object.SkipLine 8、Skip方法:當(dāng)讀一個TextStream文件時跳過指定數(shù)量的字符。跳過的字符將不被讀取。 語法:object.Skip(characters)object:必需的。表示一個TextStream對象的名字。characters:必需的。當(dāng)讀文件時要跳過的字符的數(shù)量。好了。這一節(jié)中介紹了TextStream對象的一些屬性及方法。到這一節(jié)為止,我們就已經(jīng)基本掌握了在VBA中如何使用FileSystemObject來讀寫文本文件的方法了。在接下來的一節(jié)里,我們將學(xué)習(xí)如何將文本文件中的數(shù)據(jù)讀取到Excel中,及如何將Excel單元格中的數(shù)據(jù)寫入到指定的文本文件中。中,我們將介紹FileSystemObject對象返回的TextStream對象的屬性與方法,并示例如何對文本文件進(jìn)行讀寫操作。VBA使用FileSystemObject將讀取或?qū)懭胛谋疚募?三) 分類: VBA 2010-08-12 11:45 1771人閱讀 評論(0) 收藏 舉報 第一節(jié):VBA使用FileSystemObject將讀取或?qū)懭胛谋疚募?一)第二節(jié):VBA使用FileSystemObject將讀取或?qū)懭胛谋疚募?二) 在上兩節(jié)中已經(jīng)詳細(xì)介紹了FileSystemObject對象的一些屬性及方法。那么在這一節(jié)里,我們將舉例說明如何使用VBA在Excel與文本文件中的導(dǎo)入導(dǎo)出。假設(shè)我們有如下數(shù)據(jù)表及文本文件: 現(xiàn)在要實(shí)現(xiàn)在這兩個文件中的數(shù)據(jù)按指定的格式進(jìn)行導(dǎo)入導(dǎo)出。下面我們就先進(jìn)行將EXCEL數(shù)據(jù)表中的內(nèi)容導(dǎo)出到testfile.txt中,并按圖中的格式顯示。 一、導(dǎo)出到文本文件的示例代碼:Sub Export2TxtFile() Dim fso As Object, sFile As Object, blnExist As Boolean Dim iRow As Integer, FileName As String Set fso = CreateObject(Scripting.FileSystemObject) 創(chuàng)建FileSystemObject對象 FileName = C:/FSOTest/testfile.txt 指定文本文件名Check_FileExist: blnExist = fso.FileExists(FileName) 判斷文件是否存在 If blnExist Then If MsgBox(指定的數(shù)據(jù)文件已存在,是否覆蓋原文件?, _ vbExclamation + vbYesNo, 提示信息) = vbNo Then 如果不覆蓋原文件,則要求指定文件名 FileName = Application.InputBox(請輸入文件名:) If FileName = False Then FileName = Sheet1.Name & !$A$1 FileName = C:/FSOTest/ & FileName & .txt GoTo Check_FileExist 再次檢查文件是否存在 Else 如果是,則先刪除原文件 fso.DeleteFile (FileName) End If End If Set sFile = fso.CreateTextFile(FileName) sFile.WriteLine ( & Sheet1.Range(A1).Value & ) 寫入第一行數(shù)據(jù) sFile.WriteBlankLines (1) 寫入一個空白行 For iRow = 2 To Sheet1.Range(A65536).End(xlUp).Row 從單元格A2開始讀取數(shù)據(jù),到數(shù)據(jù)表結(jié)尾,寫入到文本文件中 sFile.WriteLine (Sheet1.Cells(iRow, 1).Value _ & | & Sheet1.Cells(iRow, 2).Value _ & | & Sheet1.Cells(iRow, 3).Value _ & | & Sheet1.Cells(iRow, 4).Value) Next iRow If MsgBox(文件已導(dǎo)出。是否打開該文件?, vbYesNo + vbInformation) = vbYes Then Shell (NotePad.exe & FileName) 打開文本文件 End IfEnd Sub 二、將文本文件導(dǎo)入到Excel數(shù)據(jù)表中:Sub ImportFromTextFile() Dim fso As Object, sFile As Object, blnExist As Boolean Dim FileName As String, LineText As Variant, i As

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論