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
這是一個已知的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
嘗試'path = ThisWorkbook.Path&「:SUBFOLDER:」' –
https://stackoverflow.com/questions/10045474/dir-function-not-working-in-mac-excel-2011-vba/38042805另請嘗試'MacID(「TEXT」)' –
感謝您的(立即)回覆。我嘗試用':'替換'/'。 'ThisWorkbook.Path&「:SUBFOLDER:」',這會在第一次調用Dir時導致文件未找到錯誤,而使用:ThisWorkbook.Path&「/ SUBFOLDER /」'會返回第一個文件的名稱在子文件夾中。 (雖然它會在第二個Dir呼叫時崩潰)。我也試過用冒號(:)和斜槓(/)作爲文件夾分隔符的'MacID(「TEXT」)',但是這也拋出了找不到文件的錯誤,而'MacID(「XLSX」)'返回文件名,第一次 –