Below code should work for you.
Sub Loop8()
Dim fileName As String, filePath As String
Dim lookupWB As Workbook
Dim lookupWS As Worksheet, currWS As Worksheet
Dim wb As Workbook, ws As Worksheet
Dim book2Name As String
Set currWS = ThisWorkbook.Sheets("Sheet4")
fileName = "vlookup.xlsx"
filePath = "C:\Users\tom\Desktop\" & fileName
If IsBookOpen(fileName) = False Then Workbooks.Open (filePath)
Set lookupWB = Workbooks(fileName)
Set lookupWS = lookupWB.Sheets("Sheet1")
currWS.Range("AB2") = Application.WorksheetFunction.VLookup(currWS.Range("Y2").Value, lookupWS.Range("$Y:$AB"), 4,False)
End Sub
IsBookOpen Function:
Function IsBookOpen(FileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open FileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsBookOpen = False
Case 70: IsBookOpen = True
Case Else: Error ErrNo
End Select
End Function
IsBookOpen function is taken from here written by @SiddharthRout