返回列表 上一主題 發帖

[發問] VBA 開啟檔案應用

回復 1# Jason80Lo


能否上傳部份文字檔及excel主檔,並手動模擬需求結果?

基本要求:
尋求VBA解決問題,上傳檔案才可正確判讀資料結構及決定方法!

TOP

本帖最後由 准提部林 於 2015-9-28 20:53 編輯

程式碼請自行去套,在工作表1建兩個按鈕,分別指定〔開始〕及〔停止〕,
〔停止〕鈕用來暫停程式,關閉檔案前也必須按〔停止〕再關!
uP = ThisWorkbook.Path & "\" 是文字檔資料夾的〔路徑〕,請自行更改實際路徑!

程式碼初看頗複雜,恕無法一一說明,有必要可搜一下論壇資料去漸進理解!
 
  1. Public uMode&, uBook As Workbook, uSht As Worksheet, uDic As Object
  2. '======================================================
  3.  
  4. Sub 開始()
  5. Dim FN, xE As Range
  6. If uMode = 1 Then Exit Sub
  7. Set uBook = ThisWorkbook
  8. Set uSht = uBook.Sheets("工作表1")
  9. Set uDic = CreateObject("Scripting.Dictionary")
  10. Set xE = uSht.Cells(1, Columns.Count).End(xlToLeft)
  11. For Each FN In Range(uSht.[B1], xE).Value
  12.   If FN Like "*.txt" Then uDic(FN) = 1
  13. Next
  14. uMode = 1
  15. Call 監視
  16. End Sub
  17.  
  18. '======================================================
  19. Sub 停止()
  20. uMode = 0
  21. Set uDic = Nothing
  22. End Sub
  23.  
  24. '======================================================
  25. Sub 監視()
  26. Dim uP$, xE As Range, TM, FL$, TT
  27. If uMode = 0 Then Exit Sub
  28. TM = Time
  29. uSht.[A5] = Format(TM, "hh:mm:ss")
  30. If Second(TM) = 0 And Minute(TM) Mod 5 = 0 Then '這是每5分鐘
  31. 'If Second(TM) Mod 5 = 0 Then '這是每5秒
  32.   uP = ThisWorkbook.Path & "\"
  33.   Set xE = uSht.Cells(1, Columns.Count).End(xlToLeft)(1, 2)
  34.   Do
  35.     If FL = "" Then FL = Dir(uP & "*.txt") Else FL = Dir
  36.     If FL = "" Then Exit Do
  37.     If uDic(FL) = "" Then
  38.      xE = FL:   uDic(FL) = 1
  39.      Open uP & FL For Input Access Read As #1
  40.       Line Input #1, TT
  41.       xE(3, 1) = TT
  42.      Close #1
  43.      Set xE = xE(1, 2)
  44.     End If
  45.   Loop
  46.   uBook.Save
  47. End If
  48. Application.OnTime Now + TimeValue("00:00:01"), "監視"
  49. End Sub
複製代碼
 

TOP

回復 5# GBKEE


Application.OnTime xTime, "Ex", Schedule:=False  '關閉下一個OnTime的執行 

還是超版的程式〔有料〕~~ 

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題