台灣最大程式設計社群網站
線上人數
794
 
會員總數:241870
討論主題:187137
歡迎您免費加入會員
討論區列表 >> office VBA / WinOS >> 該如何將多個 TXT 檔內的資料放入 EXCEL 裡面呢?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
該如何將多個 TXT 檔內的資料放入 EXCEL 裡面呢?
價值 : 50 QP  點閱數:1710 回應數:13

樓主

闕綸志
門外漢
0 1
38 7
發送站內信

我從 Google 找了一些文章

http://www.blueshop.com.tw/board/FUM20050110200833I8T/BRD20121113144534X82.html
從這篇找到可以開啟 txt 的方法,可是文內是限於指開一份文件,

http://www.blueshop.com.tw/board/FUM20060608180224R4M/BRD20091202195649J5R.html
後來找到這篇,是可以開啟多篇文件的,

試了很多次想要合併,可是一直失敗,
我想藉由這次的機會,除了解決自己的問題,也想學會VBA的一些邏輯、語法、
所以希望各位先進教育晚輩時,可以多一些註解,讓我可以比較明白各個指令以及語法的功能,

總之,切入重點

我的 txt 在
D:\00001\2015_06_18_06_00.txt
D:\00002\2015_06_18_06_00.txt
D:\00003\2015_06_18_06_00.txt
D:\00004\2015_06_18_06_00.txt
D:\0000x\YYYY_MM_DD_HH_MM.txt ........ 依此類推,有超過100個資料夾

txt 的自動產生,我可以做到 txt 檔內每一個數據都用逗點區別,但我們先假定每一個 txt 檔裡面都只有一個四位數字的數據
我想要第一個(00001資料夾) txt 檔可以放在 Excel 的 A2儲存格
我想要第二個(00002資料夾) txt 檔可以放在 Excel 的 B2儲存格
我想要第三個(00003資料夾) txt 檔可以放在 Excel 的 C2儲存格
我想要第四個(00004資料夾) txt 檔可以放在 Excel 的 D2儲存格
. .
. .
. .
我想要第十個(00010資料夾) txt 檔可以放在 Excel 的 J2儲存格
第十一個開始就換行到 EXCEL 的 A4 儲存格,然後B4、C4、D4、、、J4
第二一個開始就換行到 EXCEL 的 A6 儲存格,然後B6、C6、D6、、、J6 ....... 依此類推

然後我在 A24 放了一個 =today(),所以還要做一個判斷,就是如果 txt 檔名的日期不是今日,儲存格的內容就可能顯示 error 之類的.....

有點龐大的困難,
另外,
http://www.kingstone.com.tw/book/book_page.asp?kmcode=2014713435736&actid=WISE
http://www.kingstone.com.tw/book/book_page.asp?kmcode=2013120333796&actid=WISE
這兩本書好不好阿,因為我將來工作上可能會用到滿多的,我想買參考書來閱讀。

先謝謝各位先進、前輩、花這麼多時間聽我問完
希望能跟大家一同討論如何編寫這套程式。
謝謝、謝謝。

搜尋相關Tags的文章: [ EXCEL ] , [ TXT ] , [ VBA ] , [ 巨集 ] , [ 跨檔案 ] ,
本篇文章發表於2015-06-18 22:55
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
您要在 Excel (VBA) 內作嗎?
建議您用 Visual Studio 來作。沒問題的
本篇文章回覆於2015-06-19 09:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

P陳
檢舉此回應
假設您要走 "程式"這條路,早晚要學 VB 的
本篇文章回覆於2015-06-19 09:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
請參考我的範例
http://www.blueshop.com.tw/board/FUM20050110200833I8T/BRD20121113144534X82.html
將第一行改為
Sub ReadfiletoExcel(fname as string)
第11行改為
Open fname For Input As #f
第12-19依你的檔名判斷去改放的位置,至於A24 放了一個 =today()...也是在這實做並檢查
第21行就除,以便回圈繼續進行
都改完之後
寫一個迴圈去呼叫ReadfiletoExcel並傳入您定義有連續性的檔名如以下

這樣就變成可讀寫多份文件
至於書好不好,要自己去翻,看能不能看懂,適合自己的話就是好書

本篇文章回覆於2015-06-19 10:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Antony
檢舉此回應
讓我研讀一下.....
本篇文章回覆於2015-06-21 19:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Antony
檢舉此回應
#f 這個語法是什麼意思阿...?
本篇文章回覆於2015-06-21 23:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

香帥
檢舉此回應
#f 這個語法是什麼意思阿...?
那是檔案編號,開檔存取都要用到。
本篇文章回覆於2015-06-22 11:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Antony
檢舉此回應
我目前遇到幾個問題... 找不太到答案

VBA 有沒有副程式阿... ?
我一直以為是 GOTO LABEL, LABEL 的結尾打上 RESUME 就好,可是好像不對......

另外,因為我有上百個路徑要去截取,路徑下的檔案也是每日都會變動,
有沒有辦法用類似 IF... THEN... ELSE 這類的方式去判斷【檔案是否存在】,
我將檔案的路徑放在儲存格"A37"
IF DIR("RANGE("A37")") = EMPTY 這是一個錯誤的寫法,該怎麼寫才能讓程式去檢查呢?
本篇文章回覆於2015-07-04 15:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Antony
檢舉此回應
還是 CALL 才是副程式的指令?
本篇文章回覆於2015-07-04 16:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

Antony
檢舉此回應
Dir 的問題我突然想到解決方法了

Dim TagetFile As String
Dim StrDir As String

TagetFile = s.Range("A37").Text
StrDir = Dir(TagetFile)
MsgBox StrDir

如此就 OK
本篇文章回覆於2015-07-05 23:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

香帥
檢舉此回應
還在懷念以前的副程式,現在已很少人會用
以下程式碼副程式def讓您參考
本篇文章回覆於2015-07-07 23:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

Antony
檢舉此回應
真的不太有人用副程式嗎?
為什麼?

所以大家都是用迴圈處理重複性的事情嗎?
本篇文章回覆於2015-07-20 12:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

香帥
檢舉此回應
應該說GoSub是早期用法
現呼叫同一段程式碼都用
sub 或 function
至於回圈本就是處理重複性工作,跟副程式或sub或function沒關係
本篇文章回覆於2015-07-21 00:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

Antony
檢舉此回應


這幾年下來,我的報表程式看起來都還算順利,可是這個月開始出問題,

我發現

a(0)=09/01/17 時, DateValue(a(0)) = 2009/01/17 (這項是錯誤的)
b(0)=08/31/17 時, DateValue(b(0)) = 2017/08/31 (這項是正確的)

我應該如何讓 DateValue(a(0)) = 2017/09/01
因為我要比較兩日期的大小,所以使用 DataValue,
再麻煩路過的高手讓我理解一下該怎麼去固定日期格式。

感謝不盡。
本篇文章回覆於2017-09-03 13:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.