ThisWorkbook is a predefined object and is pointing to the workbook that contains the macro itself. Since ThisWorkbook always exists there is no need for a variable to hold ThisWorkbook (in this case wb1 was used). Thisworkbook also has no arguments so does not need any brackets, hence the object error. Your code corrected:
Sub Alt1_Demo()
Dim sFilename As String
Dim wb2 As Workbook
sFilename = "IPW-CAP-00-XX-RE-Z-0001.xlsx"
Set wb2=Workbooks.Open(Filename:="X:\089872 - IPW - Framework\02 Admin\01 DocRegisters\" & sFilename)
wb2.Worksheets("Framework").Range("D6:D10").Copy
ThisWorkbook.Worksheets("Sheet 1").Range("B7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wb2.Close False
End Sub
You can make this generic like so:
Sub DoSomeFiles()
ProcessFile "IPW-CAP-00-XX-RE-Z-0001.xlsx"
ProcessFile "IPW-CAP-00-XX-RE-Z-0002.xlsx"
ProcessFile "IPW-CAP-00-XX-RE-Z-0003.xlsx"
End Sub
Sub ProcessFile(sFilename As String)
Dim wb2 As Workbook
Set wb2=Workbooks.Open(Filename:="X:\089872 - IPW - Framework\02 Admin\01 DocRegisters\" & sFilename)
wb2.Worksheets("Framework").Range("D6:D10").Copy
ThisWorkbook.Worksheets("Sheet 1").Range("B7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wb2.Close False
End Sub