ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Print UserForm A4 size (https://www.excelbanter.com/excel-programming/321469-print-userform-a4-size.html)

SZ

Print UserForm A4 size
 
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


Michel Pierron

Print UserForm A4 size
 
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

"SZ" a écrit dans le message de
oups.com...
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




All times are GMT +1. The time now is 10:10 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com