Perhaps something like this will work for you.
Sub test()
Dim myWorkbooks(1 To 4) As Workbook
Dim FilePaths(1 To 4) As String
Dim NameToClose(1 To 4) As String
Dim fileParts As Variant, fileName As String
Dim i As Long
Rem get file paths from somewhere
FilePaths(1) = "Macintosh HD:Users:merickson:Desktop:Workbook1.xlsm"
FilePaths(2) = "Macintosh HD:Users:merickson:Desktop:Workbook2.xlsm"
FilePaths(3) = "Macintosh HD:Users:merickson:Desktop:Workbook3.xlsm"
FilePaths(4) = "Macintosh HD:Users:merickson:Desktop:Workbook4.xlsm"
Rem open any unopened files
For i = 1 To 4
fileParts = Split(FilePaths(i), Application.PathSeparator)
NameToClose(i) = Trim(fileParts(UBound(fileParts)))
If WorkbookIsOpen(NameToClose(i)) Then
Set myWorkbooks(i) = Workbooks(NameToClose(i))
NameToClose(i) = vbNullString
Else
Set myWorkbooks(i) = Workbooks.Open(FilePaths(i))
End If
Next i
Rem do stuff to the open workbooks
MsgBox Application.Workbooks.Count
Rem close the previously closed workbooks
For i = 1 To 4
If NameToClose(i) <> vbNullString Then
Workbooks(NameToClose(i)).Close savechanges:=True
End If
Next i
End Sub
Function WorkbookIsOpen(WorkbookName As String) As Boolean
On Error Resume Next
WorkbookIsOpen = (Workbooks(WorkbookName).Name = WorkbookName)
On Error GoTo 0
End Function