Board logo

標題: [發問] 如何在工作表中直接匯入文字檔 [打印本頁]

作者: 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
試試看
  1. Sub Ex()
  2.     Dim FilePath As String, Rng As Range, FS As Object, Ar
  3.     FilePath = Sheets("Menu").Range("B1")                   '檔案資料夾"
  4.     FilePath = FilePath & IIf(Right(1, 1) = "\", "", "\")   '檢查資料夾尾端有無"\"
  5.     Set Rng = Sheets("Menu").Range("D9")                    '第1個檔案名稱
  6.     Do
  7.        Set FS = CreateObject("Scripting.FileSystemObject").GetFile(FilePath & Rng) '取的檔案物件
  8.                                              'FileSystemObject 提供對電腦檔案系統的存取的物件
  9.         Set FS = FS.OpenAsTextStream(1, -2)  'TextStream 物件->加快對檔案的順序存取。
  10.         Ar = Split(FS.READALL, Chr(10))      '讀取資料存入陣列 Ar
  11.         FS.Close                             ' 將檔案關閉。
  12.         With ActiveWorkbook                  '作用中的活頁簿
  13.             .Sheets.Add(, .Sheets(.Sheets.Count)).Name = Rng            '新增工作表且命名為檔案名稱
  14.             .Sheets(Rng.Value).[A1].Resize(UBound(Ar) + 1, 1) = Ar      '讀取的資料放入新增工作表
  15.         End With
  16.         Set Rng = Rng.Offset(1)                                         '下一個檔案名稱
  17.     Loop Until Rng = ""                                                 '沒有檔案名稱 離開迴圈
  18. 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/)