331
Please note the above examples assume that there is a print area on the worksheet.  If there is not,
the above will crash.  To avoid the crash, either test to see if there is a print area, or use anOn
Error statement to handle the error:
Sub Select_The_Print_Area()
Dim printR As Range
'test to see if there is a print area set
If ActiveSheet.PageSetup.PrintArea <> "" Then
'if there is an area set printR to refer to this area
Set printR = Range(ActiveSheet.PageSetup.PrintArea)
End If
'test to see if printR is set to a range, display a message if it is not
'and select the range if it is set.
If printR Is Nothing Then
MsgBox "No print area"
Else
printR.Select
End If
End Sub
15.5 Enlarging A Print Area Range
There are many methods to do this.  Here are a couple that use theResize(rows, columns)
function.  TheResize function allows you to specify the new number of rows and columns.  It
defaults to the existing number if an argument is not supplied.
Set rng = Range("print_area")
rng.Resize(rng.Rows.Count + 3).Name = "Print_Area"
or
Set rng = Range("print_area")
rng.Resize(rng.Rows.Count + 3, _
rng.Columns.Count 
-
2).Name = "Print_Area"
15.6 Add Or Exclude An Area From Print_Area
It looks as if Excel has a little feature  that is not activated and must be activated via a macro.  It
is the ability to add a range to the current print area or exclude an area from the print area via a
menu choice.
To see this feature in action first make sure the active sheet has a print area defined on it (File,
Print Area, Set Print Area).  Then run this macro:
Pdf rotate page - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
pdf rotate pages and save; pdf reverse page order online
Pdf rotate page - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
how to rotate one page in pdf document; change orientation of pdf page
332
Sub MakePrnAreaTB()
On Error Resume Next
CommandBars("Temp").Delete
CommandBars.Add "Temp", , , True
CommandBars("Temp").Controls.Add _
msoControlButton, 1583, , , True
CommandBars("Temp").Controls.Add _
msoControlButton, 1586, , , True
CommandBars("Temp").Visible = True
End Sub
Now this toolbar can have 3 states (but, again, only if a print area has been set):  If the current
selection is not in or partly in the print area the tool button "Add to Print Area" will appear.  If the
current selection comprises all of one of the areas that make up   the print area the tool button
"Exclude from Print Area" will appear (e.g.,   the print area is A1:B10 and A1:B10 is selected or
the print area is   A1:B10,D5:F15 and D5:F15 is selected.  If neither condition is met no tool
button will appear on the toolbar.
The macro above creates a new toolbar just for demonstrating the feature.  The natural place for
this is on the Cell popup (right clicking on a cell).  To add it there run this macro:
Sub AddPrnAreaCtrls()
RemovePrnAreaCtrls
With CommandBars("Cell")
.Controls.Add msoControlButton, 1583
.Controls.Add msoControlButton, 1586
End With
End Sub
Sub RemovePrnAreaCtrls()
On Error Resume Next
With CommandBars("Cell")
.Controls("Add To Print Area").Delete
.Controls("Exclude from Print Area").Delete
End With
End Sub
You only have to run this once as the addition is "permanent" at least until   you reset your
toolbars or run the remove macro.  The next time you run   Excel it should be there.
15.7 Updating The Header Or Footer Before Printing
You can automatically update the print footer, header or other print settings before a sheet is
printed.  To do this, you would put the code to update the settings in the worksheet's module
before print event.  The following example changes the left header to the value in cell A1 of the
sheet:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.LeftHeader = Range("A1").Value
End Sub
The following prompts the user for a description for the footer before printing the active sheet:
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Convert Tiff to Jpeg Images. Convert Word, Excel, PowerPoint to Tiff. Convert PDF to Tiff. Move Tiff Page Position. Rotate a Tiff Page. Extract Tiff Pages. Tiff
how to change page orientation in pdf document; how to save a pdf after rotating pages
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
XDoc.PDF ›› VB.NET PDF: Delete PDF Page. using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
rotate pages in pdf online; pdf rotate single page
333
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim userResponse
'turn off EnableEvents so this event is not triggered again by the printout
'statement below
Application.EnableEvents = False
'set Cancel to True to cancel the printout request from the user
Cancel = True
'get a description from the user for the footer
userResponse = Application.InputBox( _
prompt:="Enter a description for the footer", _
Default:=ActiveSheet.PageSetup.LeftFooter, _
Type:=2)
'if cancel is selected, bypass printing the sheet and changing the footer
If userResponse <> False Then
ActiveSheet.PageSetup.LeftFooter = userResponse
ActiveSheet.PrintPreview
End If
'turn event handling back on
Application.EnableEvents = True
End Sub
15.8 Restricting Options in PrintPreview
If you use the statement
Activesheet.PrintPreview False
in your code, then the Margins and Setup buttons are disabled.  If you first immediately follow it
with
ActiveWindow.View = xlNormalView
then the user can not convert to page break mode by use of that button on the preview screen.
15.9 Memory Problems With Page Setup
If you set the page setup using VB code, this causes a memory link.  Using the Excel 4
equivalent macro works does not appear to cause this problem:
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Professional .NET PDF control for inserting PDF page in Visual Basic .NET class application.
pdf rotate all pages; rotate individual pages in pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
page processing functions, such as how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to
rotate pdf pages on ipad; rotate pages in pdf online
334
Application.ExecuteExcel4Macro("PAGE.SETUP(...)"
The following illustrates the syntax and its use (all must be on one line):
PAGE.SETUP(Header, Footer, LeftMargin, RightMargin,
TopMargin, BottomMargin,
RCHeadings, Gridlines, HorizCenter,
VertCenter, Orientation, PaperSize,
Scale, PageNum, PageOrder)
Where:
Orientation:  1 = Portrait;  2 = Landscape
PaperSize:  1 = Letter; 5 = Legal
PageOrder:  1 = TopToBottom, then Right;    2 = LeftToRight, then Down
Scale:  TRUE = Fit to a page; To specify a percentage of reduction or enlargement, set scale to
the percentage
To format the Header and Footer text, precede it with the following formatting codes:
&L  to left
-
align the characters that follow
&C to center the characters that follow
&R to right
-
align the characters that follow
&B turns bold on or off
&I   turns italics on or off
&U turns underlining on or off
&D date
&T  time
&P page number
&F the filename
&& inserts an ampersand
&"fontname" prints the characters that follow in the font specified by 'fontname' (use double
quotation marks)
&nn prints characters that follow in the font size specified by 'nn' (use 2 digit number)
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Pages. |. Home ›› XDoc.PDF ›› C# PDF: Delete PDF Page. Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How
save pdf rotate pages; reverse pdf page order online
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
1. Anticlockwise rotation. Rotate PDF page 90 degree in anticlockwise. 2. Clockwise rotation. Rotate PDF page 90 degree in clockwise. 3. Zoom in.
pdf rotate one page; pdf page order reverse
335
&N prints the total number of pages in the document
The same function for chart sheets is a little different (again, all arguments are optional):
PAGE.SETUP(Header, Footer, LeftMargin, RightMargin,
TopMargin, BottomMargin, ChartSize,
HorizCenter, VertCenter, Orientation,
PaperSize, Scale, PageNum)
ChartSize 1 = ScreenSize;  2 = FitToPage;  3 = FullPage
The following illustrates the code:
Sub PageSetupXLM4()
'Fill Header using XLM
' Note in the next line the use of the double sets of quotation marks ("")
' also, DO NOT USE a line continuation character – make all on one line
ExecuteExcel4Macro "PAGE.SETUP(""&LThis is the left header&CThis is
the center header&RThis is the right header"",""&LThis is the left
footer&CThe center footer&RThis is the right footer"")"
End Sub
15.10 How To Fit The Printout To One Page
If you record a macro that changes the page setup, you will get about 40 lines of code.  If all you
need to do is to fit the printout to one page, then just use the following statements:
With Worksheets("Sheet1").PageSetup
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
15.11 Controlling Printing
Excel allows you to control printing by theWorkbook_BeforePrint event.  This event is one
that is located in the workbook's code module.  To access this module, select the workbook object
in the project explorer and click on the view code button at the top of the project explorer.  Note
that you need to turn offApplication.EnableEvents before printing out.
The following code illustrates using theWorkbook_BeforePrint event.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
C# WPF PDF Viewer SDK to view PDF document in C#.NET
1. Anticlockwise rotation. Rotate PDF page 90 degree in anticlockwise. 2. Clockwise rotation. Rotate PDF page 90 degree in clockwise. 3. Zoom in.
rotate pdf page few degrees; rotate pdf pages by degrees
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Existing PDF Pages. Page: Replace PDF Pages. Page: Move Page Position. Page: Copy, Paste PDF Pages. Page: Rotate a PDF Page. PDF Read. Text
rotate pdf pages in reader; pdf rotate single page reader
336
'turn off EnableEvents so this event is not triggered again by the printout
'statement below
Application.EnableEvents = False
'set Cancel to True to cancel the printout request from the user
Cancel = True
'add a page break before printing
With ActiveSheet
.HPageBreaks.Add Before:=Range("B10")
.PrintOut
.HPageBreaks(1).Delete
End With
'turn EnableEvents back on
Application.EnableEvents = True
End Sub
15.12 Printing Directly To A Printer
You can open the printer as though it is a file.
Sub TestPrintToPrinter()
Dim F As Integer
F = FreeFile()
Open "Lpt1:" For Output As #F
Print #F, "abcde"; Space$(5); "fghij"
Print #F, Chr$(12);
Close #F
End Sub
15.13 How To Have The User Change The Active
Printer
The following statement will display a dialog that lets the user change the active printer.  If
Cancel is selected, then it returns False.
bResponse = Application.Dialogs(xlDialogPrinterSetup).Show
If TypeName(response) ="Boolean" Then Exit Sub
15.14 How To Determine The Number Of Pages That
Will Print
337
There is no VBA function to do this but you can use an Excel 4 macro function to find that
information for the active sheet:
Dim nPages As Integer
nPages = ExecuteExcel4Macro("GET.DOCUMENT(50)")
The following is a more elaborate example that gets the number of pages for each worksheet in
the active workbook and displays that number, and the total number of pages
Sub MainRoutine_GetPages()
Dim W As Workbook
Dim Pages() As Integer
Dim I As Integer, J As Integer
Set W = ActiveWorkbook
'call subroutine that returns the number of pages in an array
GetPageCounts W, Pages()
'display the number of pages by worksheet
For I = LBound(pages) To UBound(Pages)
MsgBox W.Worksheets(I).Name & ":  " & Pages(I) & " pages"
'count the total pages
J = J + Pages(I)
Next I
'display the total number of pages
MsgBox "Total pages: " & J
End Sub
Sub GetPageCounts(WB As Workbook, PageCounts() As Integer)
Dim SheetName As String
Dim NumSheets As Integer
Dim I As Integer
With WB
'get the number of sheets
NumSheets = .Worksheets.Count
'resize the array to this number
ReDim PageCounts(1 To NumSheets) As Integer
'get the number of pages by worksheet using an excel 4 statement
338
For I = 1 To NumSheets
SheetName = .Worksheets(I).Name
PageCounts(I) = ExecuteExcel4Macro _
("Get.Document(50,""" & SheetName & """)")
Next I
End With
End Sub
15.15 Getting The Number Of Pages That Will Print
The following statements will return the number of pages that will print on the active worksheet.
It uses Excel 4 macro code to do this.
Dim Cmd As String
Dim pagesToPrint As Integer
Cmd = "GET.DOCUMENT(50,""" & ActiveSheet.Name & """)"
pagesToPrint = Application.ExecuteExcel4Macro(Cmd)
If you want, you can replace theActiveSheet.Name with a reference to any sheet in the active
workbook.  This can be by a variable which just replacesActiveSheet.Name, or by hard coding
in the name as shown below:
Cmd = "GET.DOCUMENT(50,""" & "Sheet2" & """)"
pagesToPrint = Application.ExecuteExcel4Macro(Cmd)
15.16 Printing Using Range Names
If you record your actions of going to a defined range and then setting the print area and printing,
you will get code like the following:
Application.Goto Reference:="Definitions"
ActiveSheet.PageSetup.PrintArea = "$A$2:$AH$158"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
The problem with the above recording is that the second line refers to a fixed cell range, which
may not in the future be the same as the range "Definitions" because of addition or deletion of
rows or columns.
However, you can print ranges out directly, without having to set the print area:
Range("Definitions").PrintOut
Range("Routes").PrintOut
If the ranges are on worksheets other than the active sheet, then qualify the range with the
worksheet and if in a different workbook, the workbook:
WorkSheets("Definitions").Range("Definitions").PrintOut
WorkBooks("Book1.Xls").Sheets("Trip").Range("Routes").PrintOut
339
The advantage of using range names instead of range references such as "B4:D5" is that the
range will refer to the section you want to print out even if you add or delete rows or columns.
Please note that is best to qualify theRange statement with the sheet containing the range name.
15.17 Adding Page Breaks To Your Code
The following statements add horizontal page breaks:
Rows(9).PageBreak = xlManual
ActiveCell.EntireRow.PageBreak = xlManual
The following statements add vertical page breaks:
Columns("D").PageBreak = xlManual
Columns(3).PageBreak = xlManual
ActiveCell.EntireColumn.PageBreak = xlManual
15.18 Determining PageBreaks Locations
In Excel, you can use theHPageBreaks collection to determine your horizontal page break
Rows. The following (by John Green) displays the row number of all the manually inserted
horizontal page breaks and the automatic ones in the print range.  It is necessary to run this in
Page Break View, so that the breaks are set.
For Each hpb In ActiveSheet.HPageBreaks
MsgBox hpb.Location.Row
Next hpb
The following code puts borders around the pages to be printed.
Sub BorderPages()
'Places borders around each page to be printed
Dim hpb As HPageBreak
Dim vpb As VPageBreak
Dim rngPrintArea As Range
'Clear all existing borders
Cells.Borders.LineStyle = xlNone
'If no Print Area set, set Print Area to used range
340
If ActiveSheet.PageSetup.PrintArea = "" Then
Set rngPrintArea = ActiveSheet.UsedRange
ActiveSheet.PageSetup.PrintArea = _
ActiveSheet.UsedRange.Address
Else
Set rngPrintArea = Range(ActiveSheet.PageSetup.PrintArea)
End If
'Put border around Print Area
With rngPrintArea
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
End With
'Use PageBreak View to ensure PageBreaks collection is populated
ActiveWindow.View = xlPageBreakPreview
'Place borders at all Page Breaks
For Each hpb In ActiveSheet.HPageBreaks
hpb.Location.Offset(
-
1).EntireRow _
.Borders(xlEdgeBottom).LineStyle =xlContinuous
hpb.Location.EntireRow.Borders(xlEdgeTop) _
.LineStyle = xlContinuous
Next hpb
For Each vpb In ActiveSheet.VPageBreaks
vpb.Location.Offset(0, 
-
1).EntireColumn _
.Borders(xlEdgeRight).LineStyle = xlContinuous
vpb.Location.EntireColumn.Borders(xlEdgeLeft) _
.LineStyle = xlContinuous
Next vpb
ActiveWindow.View = xlNormalView
End Sub
15.19 Locating Page Breaks
The first 2 of the following functions returns the row numbers and column numbers of the
horizontal and vertical page breaks using the HPageBreaks and VPageBreaks collections. The last
2 do it the old
-
fashioned way, with XLM functions.
Function PageBreakRows() As Variant
Dim V As Variant, N As Long, i As Long
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
With ActiveSheet
N = .HPageBreaks.Count
ReDim V(0 To N)
V(0) = 1
Documents you may be interested
Documents you may be interested