iT邦幫忙

0

如何開啟最新的EXCEL檔案

在現有EXCEL檔案要去開啟資料夾中最近存檔的EXCEL檔案
每次都要用時間排序再開啟.....很累
在此資料夾"E:\Jason\EXCEL\Test"中有多個EXCEL檔案(約80個)
有舊版的(.xls)也有新版的(.xlsx及.xlsm)
請問EXCEL VBA要如何寫
才能開啟此資料夾中最近存檔的EXCEL檔案

slime iT邦大師 1 級 ‧ 2019-04-27 09:51:04 檢舉
命令提示字元可以 dir /o-d *.xls? 依時間排序(最新的在上面), 用 vba 呼叫 shell 執行後, 第一行有 xls 的就是最新的.
你做了哪些努力與嘗試呢?
jasonh iT邦新手 5 級 ‧ 2019-04-27 22:51:25 檢舉
有試寫了一個
Sub 開最新存的EXCEL檔()
pa = "E:\Jason\EXCEL\Test\"
r = 1
f = Dir(pa & "*.xl*")
LstFileTime = t
LstNewFile = pa & f
Do While f <> ""
t = FileDateTime(pa & f)
If LstFileTime < t Then
LstFileTime = t
LstNewFile = pa & f
End If
r = r + 1
f = Dir
Loop
Workbooks.Open LstNewFile
End Sub
但要一一比較時間, 就好花時間
若能將資料夾內檔案依據時間排序(新到舊)
那第一個EXCEL檔案就是最新的
只是不知如何寫

1 個回答

0
paicheng0111
iT邦高手 1 級 ‧ 2019-04-28 00:25:24
最佳解答

試試看FileSystemObject

sub find_new_excel()
    dim oFso as object, oFolder as object, file as object
    dim myFile as string, myFolder as string, t as date
    
    myFolder = "E:\Jason\EXCEL\Test"
    set oFso = createobject("Scripting.FileSystemObject")
    Set oFolder = oFso.GetFolder(myFolder)
    t=0
    for each file in oFolder.Files
        if file.name like "*.xls*" then
            if file.DateLastModified > t then
                t = file.DateLastModified
                myfile = file.name
            end if
        end if
    next file
    workbooks.open myFolder & "\" & myfile
end sub

我要發表回答

立即登入回答