This code is just your recorded macro with all not needed stuff taken out to make it proper. Please study it carefully to understand what I did. You should do the same with any macro you record.
Private Sub Clean_CommandButton1_Click()
'With B7 only
Iname = ThisWorkbook.Sheets("List").Range("B7").Value 'name with extension
Set NewWkBk = Workbooks.Open(Filename:="P:\Lonib\" & Iname)
SName = ThisWorkbook.Sheets("List").Range("A7").Value 'sheet name
Workbooks(Iname).Range("M6").Copy
Workbooks("Fixings.xls").Sheets("List").Range("C7").PasteSpecial _
Paste:=xlPasteValues
Workbooks(Iname).Close
End Sub
This code should solve your issue and run through the entire list of workbooks.
Private Sub New_CommandButton1_Click()
Dim List As Worksheet
Dim BkList As Range
Dim ShtList As Range
Dim FixList As Range
Dim LastRow As Long
Dim Iname As String
Dim SName As String
Dim NewWkBk As Workbook
Dim cel As Long
Set List = ThisWorkbook.Sheets("List")
With List
LastRow = .Range("B7").End(xlDown).Row
Set BkList = .Range("B7:B" & LastRow)
Set ShtList = .Range("A7:A" & LastRow)
End With
Set FixList = Workbooks("Fixings.xls").Sheets("List").Range("C7:C" & LastRow)
For cel = 1 To BkList.Count
Iname = BkList.Cells(cel).Value 'name with extension
On Error GoTo celnext 'In case book is not exist
Set NewWkBk = Workbooks.Open(Filename:="P:\Lonib\" & Iname)
On Error GoTo 0 'stop error checking
SName = ShtList.Cells(cel).Value 'sheet name
Workbooks(Iname).Sheets(SName).Range("M6").Copy
FixList.Cells(cel).PasteSpecial Paste:=xlPasteValues
Workbooks(Iname).Close
celnext:
Next cel
End Sub
Is "ThisWorkbook" the same book as "Fixings.xls"? If so, move the "Set FixList" line inside the "With List" section like this
With List
LastRow = .Range("B7").End(xlDown).Row
Set BkList = .Range("B7:B" & LastRow)
Set ShtList = .Range("A7:A" & LastRow)
Set FixList = .Range("C7:C" & LastRow)
End With