返回列表 上一主題 發帖

[發問] 搜尋某資料夾中檔案的數量,每增加一筆資料就收錄進來

[發問] 搜尋某資料夾中檔案的數量,每增加一筆資料就收錄進來

某個軟體每秒在"D:\raw data\"資料夾中儲存一個Excel檔案
檔案名稱依序從 ResultsFile1、ResultsFile2、ResultsFile3、....、ResultsFile10、ResultsFile11、...
我想要建一個"Record.xls"  叫他自動偵測這個資料夾是否有新的Excel檔進來
每當有新檔案就把他打開存取Cells(2,3)的值進入"Record.xls" 中
請問該如何寫VBA叫他自動偵測?
感謝

本帖最後由 Hsieh 於 2012-7-20 09:20 編輯

回復 1# sweetkitty
或許還有其他辦法(如開通DDE通道)
比較不花腦筋的作法
利用ONTIME方法,每秒去跑資料夾內的檔案名稱
然後記錄在A、B欄內,就能判斷是否有新增檔案
一般模組
  1. Sub auto_open()
  2. fd = "D:\raw data\" '資料夾
  3. fs = Dir(fd & "*.xls")
  4. Set sht = ThisWorkbook.Sheets(1)
  5. Do Until fs = ""
  6. If IsError(Application.Match(fs, sht.Columns("A"), 0)) Then
  7. With Workbooks.Open(fd & fs)
  8. sht.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 2) = Array(fs, .Sheets(1).Cells(2, 3).Value)
  9. .Close 0
  10. End With
  11. End If
  12. fs = Dir
  13. Loop
  14. Application.OnTime Now + TimeValue("00:00:01"), "auto_open"
  15. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 2# Hsieh


    H大大~ 這樣的方式~
   不是也一定要打開excel才能夠自動去搜尋嘛??
學習才能提升自己

TOP

回復 2# Hsieh
感謝H大回答,不過我執行的時候出現"無法執行巨集"的視窗
Loop之前的動作都執行完畢了,是最後一行Application沒辦法做
請問有什麼我沒注意的地方嗎?
謝謝!!

auto open.JPG (22.7 KB)

auto open.JPG

TOP

本帖最後由 sweetkitty 於 2012-7-24 17:15 編輯

回復 2# Hsieh

感謝H大大!  我發現把程式碼放在"模組"裡面就可以執行了
另外我修改成我要的樣子,發現您原來的程式碼跑會自動抓"有新增的檔案"取值
但我的程式碼會一直不斷的從第一個檔案開始repeat
請問是哪個程式碼沒改到呢?
感謝
  1. Sub 自動整理資料()

  2. fd = "D:\Wayne\" '資料夾
  3. fs = Dir(fd & "ResultsFile*")
  4. Set sht = ThisWorkbook.Sheets(2)
  5. Do Until fs = ""
  6. If IsError(Application.Match(fs, sht.Columns("A"), 0)) Then
  7. With Workbooks.Open(fd & fs)
  8. sht.Cells(Rows.Count, 1).End(xlUp).Offset(1) = Mid(Workbooks(fs).Name, 12)
  9. sht.Cells(Rows.Count, j * 2).End(xlUp).Offset(1) = Workbooks(fs).Sheets(1).Cells(23, j * 2 + 1).Value
  10. .Close 0
  11. End With
  12. End If
  13. fs = Dir
  14. Loop

  15. Application.OnTime Now + TimeValue("00:00:01"), "自動整理資料"

  16. End Sub
複製代碼

TOP

回復 5# sweetkitty

我發現把上面那個程式碼的第9行改成以下這樣,就不會發生重複填入資料的狀況了
  1.         sht.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 2) = Array(fs, .Sheets(1).Cells(2, 3).Value)
複製代碼
但是我還是不太明白原理,希望可以解惑
感謝

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題