標題:
[發問]
如何在工作表中直接匯入文字檔
[打印本頁]
作者:
morris0914
時間:
2011-7-27 17:39
標題:
如何在工作表中直接匯入文字檔
本帖最後由 GBKEE 於 2011-7-27 19:33 編輯
1.在B1輸入路徑
2.只要在D9~58中輪入檔案檔案名稱後按Import Data按鈕,看D9~D58有幾個檔案就會開幾個工作表並匯入文字檔
以上困擾小弟我很久,檔案如附件
[attach]7153[/attach]
作者:
GBKEE
時間:
2011-7-27 20:38
回復
1#
morris0914
試試看
Sub Ex()
Dim FilePath As String, Rng As Range, FS As Object, Ar
FilePath = Sheets("Menu").Range("B1") '檔案資料夾"
FilePath = FilePath & IIf(Right(1, 1) = "\", "", "\") '檢查資料夾尾端有無"\"
Set Rng = Sheets("Menu").Range("D9") '第1個檔案名稱
Do
Set FS = CreateObject("Scripting.FileSystemObject").GetFile(FilePath & Rng) '取的檔案物件
'FileSystemObject 提供對電腦檔案系統的存取的物件
Set FS = FS.OpenAsTextStream(1, -2) 'TextStream 物件->加快對檔案的順序存取。
Ar = Split(FS.READALL, Chr(10)) '讀取資料存入陣列 Ar
FS.Close ' 將檔案關閉。
With ActiveWorkbook '作用中的活頁簿
.Sheets.Add(, .Sheets(.Sheets.Count)).Name = Rng '新增工作表且命名為檔案名稱
.Sheets(Rng.Value).[A1].Resize(UBound(Ar) + 1, 1) = Ar '讀取的資料放入新增工作表
End With
Set Rng = Rng.Offset(1) '下一個檔案名稱
Loop Until Rng = "" '沒有檔案名稱 離開迴圈
End Sub
複製代碼
作者:
morris0914
時間:
2011-7-28 10:41
回復
2#
GBKEE
感謝大大的幫忙,困擾我好幾天的程式解決了
再請問一下,匯入的文字檔的資料有空格或是有逗號的要如何分開,讓每個資料放在一個欄位~~
作者:
ky2599y
時間:
2011-7-28 13:47
資料→資料剖析→依空格或逗號
即可將資料切開
作者:
ky2599y
時間:
2011-7-28 13:49
資料→資料剖析→依空格或逗號
即可將資料切開
ky2599y 發表於 2011-7-28 13:47
若匯入資料太多,就把資料剖析路成巨集
作者:
morris0914
時間:
2011-7-28 14:47
回復
5#
ky2599y
感謝提醒,我已改為巨集如下:
Range("A1:A255").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
TrailingMinusNumbers:=True
但有個問題是如何資料判斷,自動增加Array
另一個問題是如何讓程式排列整齊,如下:
TextQualifier=xlDoubleQuote
ConsecutiveDelimiter=False
Tab=True
作者:
ky2599y
時間:
2011-7-28 16:26
你將原始資料增加或減少試試看,應該會自動判斷的
作者:
morris0914
時間:
2011-7-28 17:13
[attach]7161[/attach]
回復
7#
ky2599y
還有幾個問題請教一下
1.附件4.log及5.log如何匯入工作表,我使用版大給的程式是在全是數字時ok,但前幾列有文字時就會出現問題
2.文字檔匯入工作表後如何遇到資料有空格或是有逗號的要如何分開,讓每個資料放在一個欄位,並讓程式判斷資料有需幾欄資料就會產生幾欄Array放置資料
作者:
GBKEE
時間:
2011-7-28 20:35
本帖最後由 GBKEE 於 2011-7-28 20:40 編輯
回復
8#
morris0914
匯入的文字檔的資料有空格或是有逗號的要如何分開
有點類似
有特定譬如說 20-30行之間
自行修改看看
在每一行中
A = Split(Ar(i), " ") '這是分隔空格 的陣列
A = Split(Ar(i), ",") '這是分隔逗號 的陣列
Cells(ii, 1).Resize(, UBound(A) + 1) = A
作者:
morris0914
時間:
2011-7-29 17:16
回復
9#
GBKEE
板大,不知是不是下例程式造成讀取4.log時只重複讀取第一列,而無法將4.log全部資料匯入工作表中
Set FS = CreateObject("Scripting.FileSystemObject").GetFile(FilePath & Rng)
作者:
GBKEE
時間:
2011-7-29 19:14
回復
10#
morris0914
讀取4.log時 可以全部讀取的
你8樓 Q: 用版大給的程式是在全是數字時ok,
但前幾列有文字時就會出現問題
所以引用類似
有特定譬如說 20-30行之間
你再看看
作者:
morris0914
時間:
2011-8-1 17:02
感謝版大的幫忙和建議,我自己會先自行試試看,有問題再請教,謝謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)