【发布时间】:2014-09-21 11:44:19
【问题描述】:
我正在尝试在 Excel 中打印一份报告,我需要它能够快速打印。就目前而言,它需要永远经历。每个报告每天大约有 1 到 2000 行数据。这是报告的vba。我有什么可以改变的,以使打印到 pdf 的功能在更短的时间内发生?
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
工作表链接:https://mega.co.nz/#!7oRCkQgT!cTzSXQ28oZ5UR_DCkIRJ8BegYEAKqQXN_PLgyQjIJtI
【问题讨论】:
标签: excel vba pdf pdf-generation