2017-06-27 142 views
0

我想通過使用Dir的文件進行迭代,並且我知道它在Mac上的工作方式與Windows不同。 This question一直有幫助,但我一直無法實施建議的解決方案。第一次調用Dir成功返回所需的文件名,但第二次調用崩潰excel。我想實現這樣的模式:Dir()在Excel for Mac 2016導致崩潰

Sub printFileNames() 
    Dim path as String 
    Dim fileName as String 
    path = ThisWorkbook.Path & "/SUBFOLDER/" 
    fileName = Dir(path, MacID("XLSX")) 
    While fileName <> "" 
    MsgBox fileName 
    fileName = Dir 'This CRASHES EXCEL 
    Wend 
End Sub 

以下是錯誤消息的屏幕截圖,在碰撞時:enter image description here

這是一個已知的bug?我是否錯誤地使用了Mac版Excel 2016的Dir?

編輯: 我一直在使用這個精確解也試過,貼在上面的鏈接的問題:

Sub Sample() 
MyDir = ActiveWorkbook.Path 
strPath = MyDir & ":SUBFOLDER:" 

strFile = Dir(strPath, MacID("TEXT")) 

'Loop through each file in the folder 
Do While Len(strFile) > 0 
    If Right(strFile, 3) = "csv" Then 
     Debug.Print strFile 
    End If 

    strFile = Dir  
Loop 
End Sub 

但是,這給出了一個「找不到文件」的錯誤,即使有兩個的.csv ,.txt和.xlsx文件在指定的文件夾中。使用:的/SUBFOLDER/代替:SUBFOLDER:打印第一個循環相應的文件名,但崩潰在調用strFile = Dir

+1

嘗試'path = ThisWorkbook.Path&「:SUBFOLDER:」' –

+0

https://stackoverflow.com/questions/10045474/dir-function-not-working-in-mac-excel-2011-vba/38042805另請嘗試'MacID(「TEXT」)' –

+0

感謝您的(立即)回覆。我嘗試用':'替換'/'。 'ThisWorkbook.Path&「:SUBFOLDER:」',這會在第一次調用Dir時導致文件未找到錯誤,而使用:ThisWorkbook.Path&「/ SUBFOLDER /」'會返回第一個文件的名稱在子文件夾中。 (雖然它會在第二個Dir呼叫時崩潰)。我也試過用冒號(:)和斜槓(/)作爲文件夾分隔符的'MacID(「TEXT」)',但是這也拋出了找不到文件的錯誤,而'MacID(「XLSX」)'返回文件名,第一次 –

回答