Userform - Printing

G

Greg B

Hi all I have a problem I am using the following code,

Private Sub cmdPrint_Click()
frmOrders.PrintForm
End Sub

How is it possible to get the userform to be printed in landscape

Thanks in advance

Greg
 
B

Bob Phillips

Greg,

You could throw up a print dialog and allow the user to select landscape
(and even the printer if required), and then print after, something like

Private Sub cmdPrint_Click()
Dim fOK As Boolean
Dim sPrinter As String

With Application
sPrinter = .ActivePrinter
fOK= .Dialogs(xlDialogPrinterSetup).Show
End With

If fOK= Then
frmOrders.PrintForm
Application.ActivePrinter = sPrinter
End If
End Sub


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
G

Greg B

Thanks for your help but it is not working right.

I have a userform called "totals" It shows all the information in a nice
layout.

The trouble is it continues to print in portrait even when the settings are
set at landscape.

Is it possible to print a userform in landscape? Is there a setting I am
not using.

Thanks again
Greg
 
D

Dave Peterson

See one more response to your other thread.

Greg said:
Hi all I have a problem I am using the following code,

Private Sub cmdPrint_Click()
frmOrders.PrintForm
End Sub

How is it possible to get the userform to be printed in landscape

Thanks in advance

Greg
 
G

Greg B

I have used the other response from Bob Phillips and it still prints
portrait.

I posted this twice because my isp must have been down.

Sorry for the double post

Greg
 
B

Bob Phillips

Greg,

Here is a technique that does work (I tested it :) which Tom Oguily posted
some time back

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)


Private Const VK_SNAPSHOT = 44
Private Const VK_LMENU = 164
Private Const KEYEVENTF_KEYUP = 2
Private Const KEYEVENTF_EXTENDEDKEY = 1



Private Sub cmdPrint_Click()
' keybd_event VK_SNAPSHOT, 0, 0, 0
DoEvents
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + _
KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + _
KEYEVENTF_KEYUP, 0
DoEvents
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:=False,
DisplayAsIcon:=False
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.Range("A1").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close Savechanges:=False
End Sub


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
D

Dave Peterson

But I wasn't writing about Bob's response.

(although his new response looks quite similar to the one I posted (Thanks to
Tom!).)
 
B

Bob Phillips

Dave Peterson said:
But I wasn't writing about Bob's response.

(although his new response looks quite similar to the one I posted (Thanks to
Tom!).)

The same I would say (apart from where the API stuff is declared), and I did
credit Tom, although I spelt his surname incorrectly (apologies Tom)/
 
C

ColourfulFigsnDiags

Bob said:
Greg,

Here is a technique that does work (I tested it :) which Tom Oguil
posted
some time back

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)


Private Const VK_SNAPSHOT = 44
Private Const VK_LMENU = 164
Private Const KEYEVENTF_KEYUP = 2
Private Const KEYEVENTF_EXTENDEDKEY = 1



Private Sub cmdPrint_Click()
' keybd_event VK_SNAPSHOT, 0, 0, 0
DoEvents
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + _
KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + _
KEYEVENTF_KEYUP, 0
DoEvents
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:=False,
DisplayAsIcon:=False
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.Range("A1").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close Savechanges:=False
End Sub


--

HTH

RP
(remove nothere from the email address if mailing direct)


"Greg B" [email protected] wrote in message
Thanks for your help but it is not working right.

I have a userform called "totals" It shows all the information in
nice
layout.

The trouble is it continues to print in portrait even when th
settings-
are-
set at landscape.

Is it possible to print a userform in landscape? Is there a setting
am
not using.

Thanks again
Greg

-

Thanks for this, but surely SURELY there is a better way to do this
Taking a screen capture and pasting it into a new work book is
ridiculously complicated way of solving this issue!

Also you should add the following code:

ActiveSheet.PageSetup.Zoom = False
ActiveSheet.PageSetup.FitToPagesTall = 1
ActiveSheet.PageSetup.FitToPagesWide = 1

after ActiveSheet.PageSetup.Orientation = xlLandscape

to ensure it prints on one page only
 
Top