前景提要(文末提供源碼下載)
txt文件在我們的日常工作中也是經常接觸的一種文件類型,尤其是從一些網站中導出的數據,或者是準備導入網站的數據,有時候也會碰到一些txt類型的文件,txt因為使用方便,沒有太多的格式要求,也會被使用在一些數據的登記上面,txt文件就是純粹的一個記事本,不具備計算等功能,如果恰好我們要統計的數據在txt上面,那麼我們要如何將txt的數據導入excel呢?
場景簡介
將txt數據導入excel,excel本身並不具備這樣的功能,當然如果你安裝了office自帶的一些插件諸如power query ,或者是更改版本的office,諸如2016的話,你可以直接使用power query的功能導入txt文件,但是可能很多的人並沒有使用這麼高級的版本,或者因為公司的電腦配置問題,沒有辦法安裝插件,這裡我們就可以嘗試使用VBA自己寫腳本實現導入txt的功能
假設當前我們桌面有這樣一個txt文件
裡面都是一些虛構的數字,文字,也不算小,有112K,我們嘗試將這些數據寫入excel
代碼區
excel和txt之間的交互,聽起來很高級,其實寫起來就很簡單了,簡單的幾句代碼就可以解決了。
Sub test()
Filename = "換成你的txt路徑"
Open Filename For Input As #1
i = 1
Do While Not EOF(1)
Line Input #1, s
Cells(i, 1) = s
i = i + 1
Loop
Close #1
End Sub
大致算起來,可能還不超過10句代碼
很輕鬆的就寫入了15147行數據
代碼分析
來看看代碼,看看VBA是如何實現txt和excel之間的交互的
Filename = "換成你的txt路徑"
這句就很簡單了,指定txt的文件的位置,大家可以根據實際的情況轉化成為自己的實際路徑,也可以通過filedialog調用對話框來選擇
Open Filename For Input As #1
標準用語,你想要寫入數據,那你肯定要打開文件對不對,所以這句話的作用就是打開txt文件,For Input就是代表寫入的意思,#1,代表標籤序號,這個文件是1號文件
Do While Not EOF(1)
這很明顯是一個循環,那麼這個循環是什麼意思呢?
關鍵點在EOF,這三個字母可以這樣拆開來理解,end of file ,文件的末尾
哪個文件的末尾呢?後面括號裡面有一個1,代表我們上面打開的1號文件
合起來意思就是隻要還沒有到達txt的末尾
Line Input #1, s
沒有到達末尾的話呢?就執行上面這句話,將每一行的內容賦值給s這個變量
然後就可以將s的內容寫入單元格中了
Cells(i, 1) = s
i = i + 1
這樣就構成了一個簡單的小循環
我們執行下代碼,看看實際運行的軌跡
第一行
第二行
依次類推
怎麼樣,是不是很簡答, 有沒有感覺到VBA的強大~
=======================================================
本節課的案例源碼已經上傳,需要的小夥伴們後臺私信“7-30-6”即可,希望大家多多支持~~
好了~明晚19:00,準時再見。