Board logo

標題: [發問] 請問如何自動匯入外部資料 [打印本頁]

作者: sandra_wang    時間: 2011-10-5 15:27     標題: 請問如何自動匯入外部資料

想請教大家Excel如何自動匯入外部資料的相關問題...
目前每天都會有固定的檔案需要匯入到Excel不同的Sheet
但是每天的檔名都有加上日期,所以檔名會隨著日期改變,
想請問大家如何讓Excel自動匯入這些檔案到指定的Sheet?
例如:
[attach]8097[/attach][attach]8097[/attach]9月17日,我必須將檔名
"F03-MB-1_0916_103051.log"的檔案內容匯入到Excel的"MB-1" sheet
"F03-MB-2_0916_103051.log"的檔案內容匯入到Excel的"MB-2" sheet
"F03-MB-3_0916_103051.log"的檔案內容匯入到Excel的"MB-3" sheet
"F03-MB-4_0916_103051.log"的檔案內容匯入到Excel的"MB-4" sheet
"F03-MB-5_0916_103051.log"的檔案內容匯入到Excel的"MB-5" sheet
"F03-MB-6_0916_103051.log"的檔案內容匯入到Excel的"MB-6" sheet
....總共有50個檔案要匯入到50個sheet (若當天缺少檔案,則該sheet內容為空白)

9月18日,我必須將檔名
"F03-MB-1_0917_103051.log"的檔案內容匯入到Excel的"MB-1" sheet
"F03-MB-2_0917_103051.log"的檔案內容匯入到Excel的"MB-2" sheet
"F03-MB-3_0917_103051.log"的檔案內容匯入到Excel的"MB-3" sheet
"F03-MB-4_0917_103051.log"的檔案內容匯入到Excel的"MB-4" sheet
"F03-MB-5_0917_103051.log"的檔案內容匯入到Excel的"MB-5" sheet
"F03-MB-6_0917_103051.log"的檔案內容匯入到Excel的"MB-6" sheet
....總共有50個檔案要匯入到50個sheet  (若當天缺少檔案,則該sheet內容為空白)

[attach]8097[/attach]
作者: GBKEE    時間: 2011-10-6 15:29

回復 1# sandra_wang
試試看
  1. Sub 匯入文字檔_Ex()
  2.     Dim MyPath As String, TheDate As String, TheFile As String, ShName As String, Mystr As String, Rng As Range, E As Variant
  3.     MyPath = ThisWorkbook.Path & "\"                    '文字檔所在的目錄
  4.     TheDate = Format(Date - 1, "mm/dd")                 '取的日期
  5.     On Error Resume Next                                'DIR 找不到檔案會產生錯誤
  6.     TheFile = Dir(MyPath & "*MB-*" & TheDate & "*.log") '尋找檔案
  7.     If Err.Number > 0 Then MsgBox "找不到  " & TheDate & "  檔案": Exit Sub
  8.     Do While TheFile <> ""
  9.         On Error GoTo ShAdd                             '工作表中沒有 ShName會產生錯誤
  10.         ShName = Mid(TheFile, InStr(TheFile, "MB-"), InStr(TheFile, "_") - InStr(TheFile, "MB-"))
  11.         Set Rng = Sheets(ShName).Cells(Rows.Count, "A").End(xlUp)
  12.         If Rng <> "" Then Set Rng = Rng.Offset(1)
  13.         Open MyPath & TheFile For Input As #1        '開啟文字檔
  14.             Do While Not EOF(1)                      '不是檔案底部時 執行迴圈
  15.                 Input #1, Mystr                      '從已開啟的循序讀取資料,並將資料指定給變數。->mystr
  16.                 For Each E In Split(Mystr, Chr(10))
  17.                     Rng = E
  18.                     Set Rng = Rng.Offset(1)
  19.                 Next
  20.             Loop
  21.         Close #1                                 '關閉文字檔
  22.         TheFile = Dir
  23.     Loop
  24.     Exit Sub
  25. ShAdd:
  26.     ThisWorkbook.Sheets.Add.Name = ShName
  27.     Err.Clear
  28.     Resume
  29. End Sub
複製代碼

作者: jackie-ap    時間: 2011-10-6 21:07

第4行錯誤 TheDate = Format(Date - 1, "mm/dd")
應該是TheDate = Format(Date - 1, "mmdd")
作者: GBKEE    時間: 2011-10-7 14:32

回復 3# jackie-ap
謝謝指正
作者: sandra_wang    時間: 2011-10-11 14:13

本帖最後由 sandra_wang 於 2011-10-11 14:14 編輯

[attach]8209[/attach]
我把資料放在桌面的SEL資料裡面上,

第三行的路徑是填入 C:\Documents and Settings\97051909\桌面\SEL

剛剛試過了,但是會出現"找不到1010檔案"
可以請大家幫我看看哪裡弄錯嗎?
作者: GBKEE    時間: 2011-10-11 14:18

回復 5# sandra_wang
   C:\Documents and Settings\97051909\桌面\SEL\
你有加上嗎?
作者: sandra_wang    時間: 2011-10-12 13:10

本帖最後由 sandra_wang 於 2011-10-12 13:43 編輯

可以了~~感謝版主!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)