Excel VBA 7.30 TxT可以導入Excel?Excel有這功能?VBA能實現

Excel 腳本語言 Line 電腦 VBA雜談 2019-06-21

前景提要(文末提供源碼下載)

txt文件在我們的日常工作中也是經常接觸的一種文件類型,尤其是從一些網站中導出的數據,或者是準備導入網站的數據,有時候也會碰到一些txt類型的文件,txt因為使用方便,沒有太多的格式要求,也會被使用在一些數據的登記上面,txt文件就是純粹的一個記事本,不具備計算等功能,如果恰好我們要統計的數據在txt上面,那麼我們要如何將txt的數據導入excel呢?

場景簡介

將txt數據導入excel,excel本身並不具備這樣的功能,當然如果你安裝了office自帶的一些插件諸如power query ,或者是更改版本的office,諸如2016的話,你可以直接使用power query的功能導入txt文件,但是可能很多的人並沒有使用這麼高級的版本,或者因為公司的電腦配置問題,沒有辦法安裝插件,這裡我們就可以嘗試使用VBA自己寫腳本實現導入txt的功能

假設當前我們桌面有這樣一個txt文件

Excel VBA 7.30 TxT可以導入Excel?Excel有這功能?VBA能實現

裡面都是一些虛構的數字,文字,也不算小,有112K,我們嘗試將這些數據寫入excel

Excel VBA 7.30 TxT可以導入Excel?Excel有這功能?VBA能實現

代碼區

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行數據

Excel VBA 7.30 TxT可以導入Excel?Excel有這功能?VBA能實現

代碼分析

來看看代碼,看看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

這樣就構成了一個簡單的小循環

我們執行下代碼,看看實際運行的軌跡

第一行

Excel VBA 7.30 TxT可以導入Excel?Excel有這功能?VBA能實現

第二行

Excel VBA 7.30 TxT可以導入Excel?Excel有這功能?VBA能實現

依次類推

怎麼樣,是不是很簡答, 有沒有感覺到VBA的強大~

=======================================================

本節課的案例源碼已經上傳,需要的小夥伴們後臺私信“7-30-6”即可,希望大家多多支持~~

好了~明晚19:00,準時再見。

相關推薦

推薦中...