Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / May 2008

Tip: Looking for answers? Try searching our database.

Need Macro to Print Current Page Only (2)

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Don Lowe - 12 May 2008 21:16 GMT
I have many people using the file. Each person only needs a page worth of
information. I need a Macro to print curent page only.

I am hoping to have a macro that looks at what pape I am on and will print
the specific page. This way I do not need to make 97 buttons for printing.
One button printing where ever you are (most of my users would not now where
they are and I am trying to make this really really easy for them).

The following code is what one person gave me. I just can't get it to work.
Please help!!!

Function PageInfo(currCell As Range)
   Dim iPages As Integer
   Dim iCol As Integer
   Dim iCols As Integer
   Dim lRows As Long
   Dim lRow As Long
   Dim x As Long
   Dim y As Long
   Dim hBreaks As Long
   Dim vBreaks As Long
   Application.ScreenUpdating = False
   ActiveWindow.View = xlPageBreakPreview
   hBreaks = Worksheets(1).HPageBreaks.Count
   vBreaks = Worksheets(1).VPageBreaks.Count
   iPages = (hBreaks + 1) * (vBreaks + 1)
   With ActiveSheet
       y = currCell.Column
       iCols = .VPageBreaks.Count
       x = 0
       Do
           x = x + 1
       Loop Until x = iCols _
           Or y < .VPageBreaks(x).Location.Column
       iCol = x
       If y >= .VPageBreaks(x).Location.Column Then
           iCol = iCol + 1
       End If
       y = ActiveCell.Row
       lRows = .HPageBreaks.Count
       x = 0
       Do
           x = x + 1
       Loop Until x = lRows _
           Or y < .HPageBreaks(x).Location.Row
       lRow = x
       If y >= .HPageBreaks(x).Location.Row Then
           lRow = lRow + 1
       End If
       If .PageSetup.Order = xlDownThenOver Then
           PageInfo = (iCol - 1) * (lRows + 1) + lRow
       Else
           PageInfo = (lRow - 1) * (iCols + 1) + iCol
       End If
   End With
   Application.ScreenUpdating = True
   ActiveWindow.View = xlNormalView
End Function

Sub printpage()
   Dim p As Long
   p = PageInfo(ActiveCell)
   ActiveSheet.PrintOut From:=p, To:=p
End Sub
Don Guillett - 12 May 2008 21:48 GMT
Sub printactivepage()
ActiveSheet.Printout  'Preview
End Sub

Signature

Don Guillett
Microsoft MVP Excel
SalesAid Software
dguillett1@austin.rr.com

>I have many people using the file. Each person only needs a page worth of
> information. I need a Macro to print curent page only.
[quoted text clipped - 62 lines]
>    ActiveSheet.PrintOut From:=p, To:=p
> End Sub
Don Lowe - 13 May 2008 12:02 GMT
Don,

I tried you code. and it printed out the whole file. What would I do to just
print the current page?

> Sub printactivepage()
> ActiveSheet.Printout  'Preview
[quoted text clipped - 66 lines]
> >    ActiveSheet.PrintOut From:=p, To:=p
> > End Sub
Don Guillett - 13 May 2008 13:11 GMT
A file is a workbook
A sheet is a tab (page) of a workbook.

The code I sent will print the current sheet ONLY, not the WORKBOOK (file).
Do you mean you want to print part of the sheet? If so, more detail.

Signature

Don Guillett
Microsoft MVP Excel
SalesAid Software
dguillett1@austin.rr.com

> Don,
>
[quoted text clipped - 75 lines]
>> >    ActiveSheet.PrintOut From:=p, To:=p
>> > End Sub
Don Lowe - 13 May 2008 13:38 GMT
Don,

I see what you are saying. If I print a tab or sheet I end up printing about
100 pages. I am wanting to print one page (current page) only. So yes, I only
want to print part of a sheet. Each sheet has information for 9 supervisors
broken down into weeks (5 weeks per supervisor). When printing the supervisor
does not know what pages they need to print out. I want to make it easy for
them by having a button that when pushed will print the specific page that
the supervisor is currently working on (instead of all one 100).

> A file is a workbook
> A sheet is a tab (page) of a workbook.
[quoted text clipped - 81 lines]
> >> >    ActiveSheet.PrintOut From:=p, To:=p
> >> > End Sub
Don Guillett - 13 May 2008 14:12 GMT
I assume that each row identifies a supervisor by name or number. Can you
filter and print visible cells?
If all else fails, send your workbook to the address below and I will take a
look
Signature

Don Guillett
Microsoft MVP Excel
SalesAid Software
dguillett1@austin.rr.com

> Don,
>
[quoted text clipped - 100 lines]
>> >> >    ActiveSheet.PrintOut From:=p, To:=p
>> >> > End Sub
Don Guillett - 13 May 2008 14:34 GMT
Something like this assigned to a shape or forms button or even a
double_click event where the supervisor is identified in col B and you
select any cell of that supervisor and fire the macro

Sub printactivesupervisor()
who = ActiveCell.Value
lr = Cells(Rows.Count, "a").End(xlUp).Row
Range("a1:x" & lr).AutoFilter field:=2, Criteria1:=who
Rows("1:" & lr).PrintPreview
Range("a1:d" & lr).AutoFilter
End Sub

Right click sheet tab>view code>insert this>double click on supervisor name
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
who = Target.Value
lr = Cells(Rows.Count, "a").End(xlUp).Row
Range("a1:d" & lr).AutoFilter field:=2, Criteria1:=who
Rows("1:" & lr).PrintPreview
Range("a1:d" & lr).AutoFilter
End Sub
Signature

Don Guillett
Microsoft MVP Excel
SalesAid Software
dguillett1@austin.rr.com

>I assume that each row identifies a supervisor by name or number. Can you
>filter and print visible cells?
[quoted text clipped - 107 lines]
>>> >> >    ActiveSheet.PrintOut From:=p, To:=p
>>> >> > End Sub
Don Guillett - 13 May 2008 18:07 GMT
Private email sent with this

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
If Application.Trim(ActiveCell) <> "Week Ending:" Then Exit Sub
ar = Target.Row
ac = Target.Column
plr = Cells.Find(What:="Notes", After:=ActiveCell, LookIn:=xlFormulas, _
       LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
       MatchCase:=False, SearchFormat:=False).Row
Range(Cells(ar - 2, ac - 23), Cells(plr, ac + 6)).PrintPreview
ActiveCell.Offset(, -1).Select
End Sub

Signature

Don Guillett
Microsoft MVP Excel
SalesAid Software
dguillett1@austin.rr.com

> Something like this assigned to a shape or forms button or even a
> double_click event where the supervisor is identified in col B and you
[quoted text clipped - 130 lines]
>>>> >> >    ActiveSheet.PrintOut From:=p, To:=p
>>>> >> > End Sub
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.