I'm attempting to print a report in Excel, I need it to be able to print quickly. As it stands it takes forever to go through. Roughly one to two thousand rows of data, per report, per day. Here is the vba for the report. Anything I could change to make the print to pdf functionality happen in much less time?
Sub TestRun()
Dim rSheet As Worksheet
Dim sSheet As Worksheet
Dim mSheet As Worksheet
Dim rRow As Long
Dim sRow As Long
Dim iRow As Long
Dim nRow As Long
Dim mRow As Long
Set mSheet = ThisWorkbook.Worksheets("Report")
Set rSheet = ThisWorkbook.Worksheets("Received")
Set sSheet = ThisWorkbook.Worksheets("Shipped")
rRow = rSheet.Cells(Rows.Count, 1).End(xlUp).Row
sRow = sSheet.Cells(Rows.Count, 1).End(xlUp).Row
mRow = mSheet.Cells(Rows.Count, "D").End(xlUp).Row + 1
mSheet.Range("A7:G" & mRow).ClearContents
mRow = mSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
With rSheet
.Range("A1:N" & rRow).AutoFilter Field:=6, Criteria1:=">=" & Sheet5.Range("B3"), Operator:=xlAnd, _
Criteria2:="<=" & Sheet5.Range("B4")
.Range("F2:F" & rRow).Copy
mSheet.Range("A" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("B2:B" & rRow).Copy
mSheet.Range("B" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("J2:J" & rRow).Copy
mSheet.Range("C" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("D2:D" & rRow).Copy
mSheet.Range("D" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("N2:N" & rRow).Copy
mSheet.Range("E" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("A2:A" & rRow).Copy
mSheet.Range("G" & mRow).PasteSpecial Paste:=xlPasteValues
.AutoFilterMode = False
End With
mRow = mSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
With sSheet
.Range("A1:N" & rRow).AutoFilter Field:=6, Criteria1:=">=" & Sheet5.Range("B3"), Operator:=xlAnd, _
Criteria2:="<=" & Sheet5.Range("B4")
.Range("F2:F" & rRow).Copy
mSheet.Range("A" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("B2:B" & rRow).Copy
mSheet.Range("B" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("J2:J" & rRow).Copy
mSheet.Range("C" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("D2:D" & rRow).Copy
mSheet.Range("D" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("N2:N" & rRow).Copy
mSheet.Range("E" & mRow).PasteSpecial Paste:=xlPasteValues
.Range("A2:A" & rRow).Copy
mSheet.Range("G" & mRow).PasteSpecial Paste:=xlPasteValues
.AutoFilterMode = False
End With
For i = 7 To mRow
mSheet.Cells(i, "F") = mSheet.Cells(i, "D") * mSheet.Cells(i, "E")
Next
mRow = mSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
mSheet.Range("D" & mRow + 3) = "TOTAL GROSS LBS"
mSheet.Range("E" & mRow + 3) = "TOTAL DAYS"
mSheet.Range("F" & mRow + 3) = "TOTAL BILLABLE LBS"
mSheet.Range("D" & mRow + 4) = Application.WorksheetFunction.Sum(mSheet.Range("D7:D" & mRow))
mSheet.Range("E" & mRow + 4) = Application.WorksheetFunction.Sum(mSheet.Range("E7:E" & mRow))
mSheet.Range("F" & mRow + 4) = Application.WorksheetFunction.Sum(mSheet.Range("F7:F" & mRow))
If Not Right(Sheet5.Range("B2"), 1) = "\" Then Sheet5.Range("B2") = Sheet5.Range("B2") & "\"
mSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Sheet5.Range("B2") & "\" & Sheet5.Range("D2"), Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
Link to worksheet: https://mega.co.nz/#!7oRCkQgT!cTzSXQ28oZ5UR_DCkIRJ8BegYEAKqQXN_PLgyQjIJtI