Print UserForm A4 size

S

SZ

I have a userForm that is A4 in size and I have tried to use the code
below to print the Active window as my userForm is the 'Active Window'
However the print outcome is 'PRINT SCREEN' with the bottom one third
of my userform not printing at all.
In a Button_Click event I have:-

DoEvents
'Copy the Activewindow to the Clipboard
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
DoEvents
'Copy the Clipboard to the Worksheet
Range(A1").select
ActiveSheet.Paste
DoEvents

Any help TIA.
SZ
 
M

Michel Pierron

Hi SZ,
You should test like that:

Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd&)
Private Declare Function EmptyClipboard& Lib "user32" ()
Private Declare Function CloseClipboard& Lib "user32" ()
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte _
, ByVal dwFlags&, ByVal dwExtraInfo&)
Private Declare Function GetVersionExA _
Lib "kernel32" (lpVersionInformation _
As OSVERSIONINFO) As Integer

Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12
Private Above4 As Boolean

Private Sub UserForm_Initialize()
Dim OSI As OSVERSIONINFO
OSI.dwOSVersionInfoSize = 148
OSI.szCSDVersion = Space$(128)
Call GetVersionExA(OSI)
Above4 = OSI.dwMajorVersion > 4
' your possible code
' ...
End Sub

' Print button
Private Sub CommandButton1_Click()
' Release button
Me.Repaint
OpenClipboard 0&
EmptyClipboard
If Above4 Then
keybd_event VK_SNAPSHOT, 1, 0, 0
Else
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End If
CloseClipboard
DoEvents
'Me.Hide
Range("A1").Select
ActiveSheet.Paste
' ....
End Sub

Regards,
MP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top