0

There is no error. The code just doesn't run. (Modern Mac running Ventura/Office 365). The code reads in files within a subdir and pastes them in new sheet in the active workbook. My only thought is that the path is wrong, but I set the "/files" to be Mac friendly...

Sub ExtractDataToDifferentSheets()

On Error GoTo HandleError
Application.ScreenUpdating = False

Dim objectFlieSys As Object
Dim objectGetFolder As Object
Dim file As Object
Dim totalpath As String

totalpath = Application.ActiveWorkbook.path & "/files"

Set objectFlieSys = CreateObject("Scripting.FileSystemObject")

Set objectGetFolder = objectFlieSys.GetFolder(totalpath)    

Dim counter As Integer

counter = 1

For Each file In objectGetFolder.Files
    Dim sourceFiles As Workbook
    Dim worksheetName As String
    
    worksheetName = file.Name
    
    Sheets.Add.Name = worksheetName
    
    
    Set sourceFiles = Workbooks.Open(file.path, True, True)
   
    
    Dim rowsNumber As Integer
    rowsNumber = sourceFiles.Worksheets("sheet1").UsedRange.rows.Count
    Dim colsNumber As Integer
    colsNumber = sourceFiles.Worksheets("sheet1").UsedRange.Columns.Count
    Dim rows, cols As Integer
    
    
    

    
    For rows = 1 To rowsNumber
        For cols = 1 To colsNumber
            Application.Workbooks(1).Worksheets(worksheetName).Cells(rows, cols) = sourceFiles.Worksheets("Sheet1").Cells(rows, cols)
        Next cols
    Next rows
    rows = 0

    sourceFiles.Close False
    Set sourceFiles = Nothing
    
    With ActiveWorkbook

        .ActiveSheet.Name = worksheetName
        counter = counter + 1
        If counter > .Worksheets.Count Then
            .Sheets.Add After:=.Worksheets(.Worksheets.Count)
        End If
        .Worksheets(counter).Activate
    End With
Next
HandleError:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
braX
  • 11,506
  • 5
  • 20
  • 33
Blake Shurtz
  • 321
  • 3
  • 13
  • 3
    Because `CreateObject` uses COM, which is a Windows-only technology that does not exist on other operating systems. – Ken White Nov 16 '22 at 00:55

1 Answers1

0

Thanks Mr. White. This is what solved the problem. Also, surprisingly, setting the filepath with the "/files/" works on both PC and Mac.

Sub ExtractDataToDifferentSheets()

Dim totalpath As String
Dim sourceFiles As Workbook
Dim worksheetName As String
Dim totalpath_name As String
Dim rows, cols As Integer
Dim rowsNumber As Integer
Dim colsNumber As Integer

On Error GoTo HandleError

Application.ScreenUpdating = False

totalpath = Application.ActiveWorkbook.path & "/files/"

MyFile = Dir(totalpath)
    
Do While MyFile <> ""
    
    totalpath_name = totalpath & MyFile
    
    worksheetName = Replace(MyFile, ".xlsx", "")

    Sheets.Add.Name = worksheetName
    
    Set sourceFiles = Workbooks.Open(totalpath_name, True, True)
    
    rowsNumber = sourceFiles.Worksheets("sheet1").UsedRange.rows.Count
    
    colsNumber = sourceFiles.Worksheets("sheet1").UsedRange.Columns.Count

    For rows = 1 To rowsNumber
        For cols = 1 To colsNumber
            Application.Workbooks(1).Worksheets(worksheetName).Cells(rows, cols) = sourceFiles.Worksheets("Sheet1").Cells(rows, cols)
        Next cols
    Next rows
    rows = 0

    sourceFiles.Close False
    
    Set sourceFiles = Nothing
    
    MyFile = Dir$
Loop

HandleError:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Blake Shurtz
  • 321
  • 3
  • 13