adjust page breaks based on row heights, export to pdf

This commit is contained in:
Paul Trowbridge 2022-06-29 17:12:00 -04:00
parent 48670f9ca7
commit 24b91e4fb5

View File

@ -490,6 +490,8 @@ Sub build_customer_files()
Dim plev As String Dim plev As String
Dim effdate As Date Dim effdate As Date
Dim segment_regex As String Dim segment_regex As String
Dim curr As String
Dim fname As String
'----------------------pick price level--------------------------------------------------------------------- '----------------------pick price level---------------------------------------------------------------------
login.Caption = "PostgreSQL Login" login.Caption = "PostgreSQL Login"
@ -595,7 +597,7 @@ Sub build_customer_files()
segment_regex = "^F|^G|^P" segment_regex = "^F|^G|^P"
Set nnws = nwb.Sheets.Add(, nws) Set nnws = nwb.Sheets.Add(, nws)
nnws.Name = "Price List - Nursery" nnws.Name = "Price List - Nursery"
Call paste_pretty(pln, nnws, effdate) Call paste_pretty(pln, nnws, effdate, curr)
End If End If
End If End If
@ -613,7 +615,7 @@ Sub build_customer_files()
End If End If
Set nfws = nwb.Sheets.Add(, nws) Set nfws = nwb.Sheets.Add(, nws)
nfws.Name = "Price List - Fiber" nfws.Name = "Price List - Fiber"
Call paste_pretty(plf, nfws, effdate) Call paste_pretty(plf, nfws, effdate, curr)
End If End If
End If End If
@ -624,7 +626,7 @@ Sub build_customer_files()
End If End If
If UBound(pl, 2) > 21 Then If UBound(pl, 2) > 21 Then
nws.Name = "Price list" nws.Name = "Price list"
Call paste_pretty(pl, nws, effdate) Call paste_pretty(pl, nws, effdate, curr)
Else Else
nws.Delete nws.Delete
End If End If
@ -642,11 +644,13 @@ Sub build_customer_files()
Application.DisplayAlerts = True Application.DisplayAlerts = True
nwb.Activate nwb.Activate
fname = "HC Companies Distributor Price List " & curr & ".xlsx"
Dim wb As Workbook Dim wb As Workbook
For Each wb In Workbooks For Each wb In Workbooks
If wb.Name = "HC Companies Distributor Price List.xlsx" Then If wb.Name = fname Then
If MsgBox("already have a price list open, close it?", vbOKCancel) Then If MsgBox("already have a price list open, close it?", vbOKCancel) Then
Workbooks("HC Companies Distributor Price List.xlsx").Close Workbooks(fname).Close
Exit For Exit For
Else Else
Exit Sub Exit Sub
@ -654,7 +658,10 @@ Sub build_customer_files()
End If End If
Next wb Next wb
If pricelevel.tbPATH.text <> "" Then nwb.SaveAs Filename:=filepath & "\HC Companies Distributor Price List.xlsx" If pricelevel.tbPATH.text <> "" Then nwb.SaveAs Filename:=filepath & "\" & fname
fname = Replace(fname, "xlsx", "pdf")
nwb.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filepath & "\" & fname, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
For Each wb In Workbooks For Each wb In Workbooks
If wb.Name = "HC FullCode List.xlsx" Then If wb.Name = "HC FullCode List.xlsx" Then
@ -674,14 +681,13 @@ Sub build_customer_files()
End Sub End Sub
Sub paste_pretty(ByRef pl() As String, ByRef nws As Worksheet, ByVal effdate As Date) Sub paste_pretty(ByRef pl() As String, ByRef nws As Worksheet, ByVal effdate As Date, ByRef curr As String)
Dim c As Range Dim c As Range
Dim i As Long Dim i As Long
Dim last As Long Dim last As Long
Dim lastcol As Long Dim lastcol As Long
Dim j As Long Dim j As Long
Dim curr As String
nws.Activate nws.Activate
nws.Cells.NumberFormat = "@" nws.Cells.NumberFormat = "@"
@ -739,7 +745,7 @@ Sub paste_pretty(ByRef pl() As String, ByRef nws As Worksheet, ByVal effdate As
nws.Columns(15).WrapText = True nws.Columns(15).WrapText = True
nws.Columns(11).ColumnWidth = 11.71 nws.Columns(11).ColumnWidth = 11.71
nws.Columns(14).ColumnWidth = 11.71 nws.Columns(14).ColumnWidth = 11.71
nws.Columns(17).ColumnWidth = 11.71 nws.Columns(17).ColumnWidth = 13
ActiveWindow.DisplayGridlines = False ActiveWindow.DisplayGridlines = False
'nws.Cells.Font.Name = "Cascadia Code Light" 'nws.Cells.Font.Name = "Cascadia Code Light"
nws.Cells.Font.Name = "Courier New" nws.Cells.Font.Name = "Courier New"
@ -1077,11 +1083,11 @@ Sub print_setup(sheet As Worksheet, last_row As Long)
'-------------------force a page break on color codes---------- '-------------------force a page break on color codes----------
j = 1 j = 1
For i = 5 To last_row For i = 5 To last_row
If j = 60 Then If j >= 810 Then
sheet.HPageBreaks.Add before:=sheet.Rows(i + 1) sheet.HPageBreaks.Add before:=sheet.Rows(i + 1)
j = 1 j = 1
End If End If
'every 73 rows is a page break for current font 'every 73 rows is a page break for current font, but if a row is taller this needs accounted for
If sheet.Cells(i, 18) = "colors" And sheet.Cells(i - 1, 18) <> "colors" Then If sheet.Cells(i, 18) = "colors" And sheet.Cells(i - 1, 18) <> "colors" Then
sheet.HPageBreaks.Add before:=sheet.Rows(i) sheet.HPageBreaks.Add before:=sheet.Rows(i)
j = 1 j = 1
@ -1090,7 +1096,7 @@ Sub print_setup(sheet As Worksheet, last_row As Long)
sheet.HPageBreaks.Add before:=sheet.Rows(i) sheet.HPageBreaks.Add before:=sheet.Rows(i)
j = 1 j = 1
End If End If
j = j + 1 j = j + sheet.Rows(i).RowHeight
Next i Next i
sheet.DisplayPageBreaks = False sheet.DisplayPageBreaks = False