如何循环浏览文件夹中的文件Excel Mac 2016

我试图把几个excel文件合并成一个。 为此,我一直在使用和修改我在这里find的一个旧的答案,但是我却在Excel 2016 for Mac上运行时遇到了麻烦(它适用于Mac版Excel 2011,并进行了一些更改)。

在Excel 2016(Mac)中,以下代码在循环中运行一次,然后打印选定文件夹中的第一个文件的名称,然后停止。

在Excel 2011(Mac)中,它正确地打印所选文件夹中的所有文件的名称。

Sub wat() Dim FilesFolder As String, strFile As String 'mac excel 2011 'FilesFolder = MacScript("(choose folder with prompt ""dis"") as string") 'mac excel 2016 FilesFolder = MacScript("return posix path of (choose folder with prompt ""dat"") as string") If FilesFolder = "" Then Exit Sub strFile = Dir(FilesFolder) Do While Len(strFile) > 0 Debug.Print "1. " & strFile strFile = Dir Loop MsgBox "ded" End Sub 

所以,我很新,但它看起来像strFile = Dir无法正常工作。

我查看了Ron deBruin页面: 在Mac上的文件夹循环(Dir for Mac Excel),但说实话,这对我来说太复杂了,无法理解和修改我的需求。

任何帮助表示感谢,并感谢您的耐心!

 Option Explicit Sub GetFileNames() 'Modified from http://www.rondebruin.nl/mac/mac013.htm Dim folderPath As String Dim FileNameFilter As String Dim ScriptToRun As String Dim MyFiles As String Dim Extensions As String Dim Level As String Dim MySplit As Variant Dim FileInMyFiles As Long Dim Fstr As String Dim LastSep As String 'mac excel 2016 'Get the directory On Error Resume Next 'MJN folderPath = MacScript("choose folder as string") 'MJN If folderPath = "" Then Exit Sub 'MJN On Error GoTo 0 'MJN 'Set up default parameters to get one level of Folders 'All files Level = "1" Extensions = ".*" 'Set up filter for all file types FileNameFilter = "'.*/[^~][^/]*\\." & Extensions & "$' " 'No Filter 'Set up the folder path to allow to work in script folderPath = MacScript("tell text 1 thru -2 of " & Chr(34) & folderPath & _ Chr(34) & " to return quoted form of it's POSIX Path") folderPath = Replace(folderPath, "'\''", "'\\''") 'Run the script ScriptToRun = ScriptToRun & "do shell script """ & "find -E " & _ folderPath & " -iregex " & FileNameFilter & "-maxdepth " & _ Level & """ " 'Set the String MyFiles to the result of the script for processing On Error Resume Next MyFiles = MacScript(ScriptToRun) On Error GoTo 0 'Clear the fist four columns of the current 1st sheet on the workbook Sheets(1).Columns("A:D").Cells.Clear 'Split MyFiles and loop through all the files MySplit = Split(MyFiles, Chr(13)) For FileInMyFiles = LBound(MySplit) To UBound(MySplit) On Error Resume Next Fstr = MySplit(FileInMyFiles) LastSep = InStrRev(Fstr, Application.PathSeparator, , 1) Sheets(1).Cells(FileInMyFiles + 1, 1).Value = Left(Fstr, LastSep - 1) 'Column A - Directory Sheets(1).Cells(FileInMyFiles + 1, 2).Value = Mid(Fstr, LastSep + 1, Len(Fstr) - LastSep) 'Column B - file name Sheets(1).Cells(FileInMyFiles + 1, 3).Value = FileDateTime(MySplit(FileInMyFiles)) 'Column C - Date Sheets(1).Cells(FileInMyFiles + 1, 4).Value = FileLen(MySplit(FileInMyFiles)) 'Column D - size On Error GoTo 0 Next FileInMyFiles 'Fit the contents Sheets(1).Columns("A:D").AutoFit End Sub