Board logo

標題: [發問] 讀取最新檔案內資料 [打印本頁]

作者: taiwan    時間: 2014-11-8 08:48     標題: 讀取最新檔案內資料

最新檔案存在A路徑內

這個最新檔案產生條件為每日定時產生

例如:2014-11-08 000846.xls
這樣下一個次產生檔案為  2014-11-08 000946.xls

我要讀取最新檔案內資料  請問我該怎麻做會比較好
作者: GBKEE    時間: 2014-11-8 16:27

回復 1# taiwan
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim xDir As String, i As Integer, Ay(), Ar(), s As Variant
  4.     Dim xPath As String
  5.     xPath = "A:\"
  6.     xDir = Dir(xPath & Format(Date, "yyyy-mm-dd") & "*.xls", vbDirectory)
  7.     'Dir: 表示合乎條件、檔案屬性、磁碟標記的一個檔案名稱、或目錄、檔案夾名稱。
  8.     If xDir = "" Then MsgBox "沒有最新檔案": Exit Sub
  9.     Do While xDir <> ""
  10.         ReDim Preserve Ar(0 To i)   '陣列:保持原有元素,重新配置動態陣列變數的儲存空間。
  11.         ReDim Preserve Ay(0 To i)
  12.         Ar(i) = xDir
  13.         Ay(i) = Val(Replace(Split(xDir, " ")(1), ".xls", "")) '取得數字
  14.         i = i + 1
  15.         xDir = Dir                  '下一個 合乎條件的檔案
  16.     Loop
  17.     s = Application.Max(Ay)
  18.     s = Application.Match(s, Ay, 0)
  19.     If MsgBox("開啟最新  檔案 " & vbTab & Ar(s - 1) & vbLf & Join(Ar, vbLf), vbYesNo) = vbYes Then
  20.         Workbooks.Open xPath & Ar(s - 1)
  21.     End If
  22. End Sub
複製代碼

作者: taiwan    時間: 2014-11-8 18:32

回復  taiwan
試試看
GBKEE 發表於 2014-11-8 16:27



以下有點看不太懂

Ay(i) = Val(Replace(Split(xDir, " ")(1), ".xls", "")) '取得數字


loop

s = Application.Max(Ay)

    s = Application.Match(s, Ay, 0)

    If MsgBox("開啟最新  檔案 " & vbTab & Ar(s - 1) & vbLf & Join(Ar, vbLf), vbYesNo) = vbYes Then

        Workbooks.Open xPath & Ar(s - 1)

麻煩大大
作者: GBKEE    時間: 2014-11-8 19:04

本帖最後由 GBKEE 於 2014-11-8 19:17 編輯

回復 4# taiwan
有點看不太懂
慢慢來,不懂的函數,方法 可察看vba的說明

DIR 會依檔案名稱遞增來排序
2#的程式碼可修改一下
  1. Option Explicit
  2. Sub Ex()
  3.     Dim xPath As String, xDir As String, S As String
  4.     xPath = "A:\"
  5.     xDir = Dir(xPath & Format(Date, "yyyy-mm-dd") & "*.xls", vbDirectory)
  6.     'Dir: 表示合乎條件、檔案屬性、磁碟標記的一個檔案名稱、或目錄、檔案夾名稱。
  7.     If xDir = "" Then MsgBox "沒有最新檔案": Exit Sub
  8.     Do While xDir <> ""
  9.         S = xDir
  10.         xDir = Dir                  '下一個 合乎條件的檔案
  11.     Loop
  12.     If MsgBox("開啟最新  檔案 " & vbTab & S, vbYesNo) = vbYes Then
  13.         Workbooks.Open xPath & S
  14.     End If
  15. End Sub
複製代碼

作者: taiwan    時間: 2014-11-11 09:07

回復  taiwan
有點看不太懂
慢慢來,不懂的函數,方法 可察看vba的說明

DIR 會依檔案名稱遞增來排序
2 ...
GBKEE 發表於 2014-11-8 19:04


For GBKEE:

以下這段是用你分享的語法改的  感謝你

我也把測試成功的語法分享給大家
  1. Sample
  2. Sub data()

  3.     Dim xPath, xDir, overdata As String
  4.     Dim best As Long

  5.    

  6.     xPath = "A:\路逕\"
  7.    
  8.     'Dir: 表示合乎條件、檔案屬性、磁碟標記的一個檔案名稱、或目錄、檔案夾名稱。
  9.     xDir = Dir(xPath & "WIP_Status_" & Format(Date, "yyyy-mm-dd") & "-" & "*.xls", vbDirectory)
  10.    
  11.       best = 0
  12.         Do While xDir <> ""

  13.             If Val(Mid(xDir, 23, 6)) > best Then

  14.                 best = Val(Mid(xDir, 23, 6))
  15.                 overdata = xDir                                      
  16.                     End If

  17.             xDir = Dir()
  18.             
  19.                 i = i + 1
  20.                
  21.             Loop
  22.             
  23.         Workbooks.Open xPath & overdata
  24.         

  25.    
  26. End Sub
複製代碼





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