Sub MakeReports()
'
' Create a report card for each student.
'
    ' Ignore errors and turn off alerts
    Dim alerts As Boolean
    alerts = Application.DisplayAlerts
    Application.DisplayAlerts = False
    On Error GoTo cleanup

    Dim reportsheet As Worksheet
    Set reportsheet = ActiveWorkbook.Worksheets("Report")
    Dim curbook As Workbook
    Set curbook = ActiveWorkbook
    
    ' Create new workbook for reports
    Dim newbook As Workbook
    Set newbook = Application.Workbooks.Add
    
    curbook.Activate
    Dim LastName As Variant
    For Each LastName In ThisWorkbook.Names("LastName").RefersToRange
        
        ' Copy report sheet to new book
        reportsheet.Copy after:=newbook.Sheets(newbook.Sheets.Count)
        Dim newsheet As Worksheet
        Set newsheet = newbook.Sheets(newbook.Sheets.Count)
        newsheet.Name = LastName
                
        ' Select student; report beomes populated with student's results
        ThisWorkbook.Names("Last_Name").RefersToRange.Value = LastName
        
        ' Remove formulas
        Dim g4 As Range
        For Each g4 In newsheet.UsedRange
            If g4.HasFormula Then
                g4.Value = g4.Value
            End If
        Next
        newbook.Names("LastName").Delete
    Next
    
    ' Delete default sheets
    newbook.Sheets("Sheet1").Delete
    newbook.Sheets("Sheet2").Delete
    newbook.Sheets("Sheet3").Delete
    
    ' Go to first sheet and restore states
cleanup:
    newbook.Sheets(1).Activate
    Application.CutCopyMode = False
    Application.DisplayAlerts = alerts
End Sub