2015-11-13 30 views
1

我有一個從我選擇一個文件夾導入的所有文件,比把它放到一個表,我想按日期導入他們採取了Excel宏(因爲文件圖片)不按文件名,這樣的圖片整理這樣導入的文件名按文件名與不聽取我的Excel宏

002_1.jpg (time is 7:00am) 
001_1.jpg (time is 7:01am) 
003_1.jpg (time is 7:03am) 

看到文件的方式投入,當他們無論文件名的拍攝順序。 你有什麼想法如何,我可以改變我目前的宏來做到這一點?

Sub filegrabber() 
Dim par, sfil As String 
Dim r As Range 
par = Application.InputBox("Enter The Directory Dont forget to add the \") 
sfil = Dir(par & "*.*", vbDirectory) 
Set r = ActiveCell 
Do Until sfil = "" 
If sfil = "." Or sfil = ".." Then GoTo skipit 
r = sfil 
ActiveCell.Hyperlinks.Add r, par & sfil 
Set r = r.Offset(1) 
skipit: 
sfil = Dir$ 
Loop 
End Sub 
+1

我很肯定你不能調整'Dir'作爲特定​​的循環方式。所以,你必須獲取該文件的日期,然後排序您的數組,所以我建議你使用FSO(文件腳本對象):http://www.exceltrick.com/formulas_macros/filesystemobject-in-vba/和https://msdn.microsoft.com/fr-fr/library/aa711216(v=vs.71).aspx – R3uK

+0

爲什麼不能簡單地按日期排序列表中,你已經獲得了所有的文件路徑後? –

回答

0

在將文件添加到工作表之前,使用FileSystemObject檢查文件的日期。

Dim FileDirectory, FileName As String 
Dim r As Range 
Dim FindThisDate As Date 

Sub filegrabber() 
    FileDirectory = Application.InputBox("Enter The Directory Dont forget to add the \") 
enterdate: 
    FindThisDate = Application.InputBox("Enter The Date of files you want to load") 
    If Not IsDate(FindThisDate) Then 
     MsgBox "Please Enter A Valid Date", vbCritical, "Invalid Date" 
     GoTo enterdate 
    Else 
     FindThisDate = CDate(FindThisDate) 
    End If 
    FileName = Dir(FileDirectory & "*.*", vbNormal) 'changed this from vbdirectory cuz you want files, not folders 
    Set r = ActiveCell 
    While FileName <> "" 
     If filedate(FileDirectory & FileName) = FindThisDate Then 
      r = FileName 
      ActiveCell.Hyperlinks.Add r, FileDirectory & FileName 
      Set r = r.Offset(1) 
     End If 
     FileName = Dir$ 
    Wend 
End Sub 

Function filedate(FileName) As Date 
Dim fso, f 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f = fso.GetFile(FileName) 
    filedate = DateValue(f.DateCreated) 
    Set fso = Nothing 
    Set f = Nothing 
End Function 
+0

是什麼,它需要給它時,它會詢問「輸入要加載文件的日期」 –

+0

取決於您的區域設置的日期格式,我用英語(美國),所以它M/d/yyyy的(你可以其實只要使用M/d如果年份是當前年份) – neuralgroove

+0

我更新了答案,以確保FindThisDate是比較之前的日期 – neuralgroove