2016-07-28 100 views
-1

我使用以下代碼讓用戶選擇一個文件夾,然後列出每個文件最後一次被修改的時間(一列爲一天,另一列爲時間)。第三列是文件的名稱。列出文件夾中的文件

Sub ListFils() 
Dim f As Object, fso As Object, flder As Object 
Dim folder As String 
Dim wb As Workbook, ws As Worksheet 

Set wb = ActiveWorkbook 
Set ws = ActiveSheet 
Set fso = CreateObject("Scripting.FileSystemObject") 

With Application.FileDialog(msoFileDialogFolderPicker) 
    .Show 
    If .SelectedItems.Count = 0 Then 
     MsgBox "Cancel Selected" 
     End 
    End If 
    folder = .SelectedItems(1) 
End With 

Range("A2").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.ClearContents 


For Each f In fso.GetFolder(folder).Files 
    ws.Range("A" & ws.Rows.Count).End(xlUp).Offset(1, 0) = f.DateLastModified 
    ws.Range("B" & ws.Rows.Count).End(xlUp).Offset(1, 0) = f.DateLastModified 
    ws.Range("C" & ws.Rows.Count).End(xlUp).Offset(1, 0) = f.Name 


Next 
Columns("A:C").Columns.AutoFit 
Range("A2").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
End Sub 

該代碼適用於Windows,但不適用於Mac。任何想法,我怎麼才能讓它工作?

+0

「...根本不起作用」 - 是否有錯誤?它運行,但跳過的東西?它根本沒有運行,你有通知嗎?當你在Mac上運行它會發生什麼? – BruceWayne

+2

Mac上不提供像Scripting庫這樣的Activex對象。你應該可以使用'Dir()'來做同樣的事情。 –

+0

@BruceWayne,它沒有任何東西。出現調試彈出。 @TimWilliams,感謝您的提示,但我正在編碼的第一步,我不知道如何使用它。我嘗試使用'Dir()',但我只能用這個命令搜索文件。 –

回答

0

蒂姆在他的評論,行Set fso = CreateObject("Scripting.FileSystemObject"),和任何依賴於fso將無法​​在Mac上工作說,但你可以使用Dir()獲取文件名,並FileDateTime("filename")得到修改日期。

相關問題