![]() |
Print UserForm w/ Borders
I have a userform that I would like to print ("Print" commandbutton on
userform). However, if I use the UserForm.PrintForm method, it doesn't print the borders with the userform. Unfortunately, the title of the userform is important in my application, so I would like to be able to print the userform with the borders. I found a VB 4.0 API call that creates a picture object (new to VB 4.0) to do this. I was hoping to find a VBA article that would do the same. Does anybody know of anything that might help? Thanks! |
Print UserForm w/ Borders
Here is a way to do it using the Windows API: I believe it will do what you
want. (gets a picture of a userform and puts it on a sheet. Then prints the sheet. ) Modification of code originally posted by "Orlando Magalhães Filho" Modified to capture just the userform (not the whole window). In a General Module: Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 'Public Const VK_SNAPSHOT = &H2C Public Const VK_SNAPSHOT = 44 Public Const VK_LMENU = 164 Public Const KEYEVENTF_KEYUP = 2 Public Const KEYEVENTF_EXTENDEDKEY = 1 Sub Test() UserForm1.Show End Sub In the userform module: Private Sub CommandButton1_Click() ' keybd_event VK_SNAPSHOT, 0, 0, 0 DoEvents keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0 ' key down 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.Range("A1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 ActiveWorkbook.Close False End Sub -- Regards, Tom Ogilvy "Maynard" wrote in message ... I have a userform that I would like to print ("Print" commandbutton on userform). However, if I use the UserForm.PrintForm method, it doesn't the borders with the userform. Unfortunately, the title of the userform is important in my application, so I would like to be able to print the userform with the borders. I found a VB 4.0 API call that creates a picture object (new to VB 4.0) to do this. I was hoping to find a VBA article that would do the same. Does anybody know of anything that might help? Thanks! |
Print UserForm w/ Borders
Perfect! Thanks for the quick response.
"Tom Ogilvy" wrote: Here is a way to do it using the Windows API: I believe it will do what you want. (gets a picture of a userform and puts it on a sheet. Then prints the sheet. ) Modification of code originally posted by "Orlando Magalhães Filho" Modified to capture just the userform (not the whole window). In a General Module: Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 'Public Const VK_SNAPSHOT = &H2C Public Const VK_SNAPSHOT = 44 Public Const VK_LMENU = 164 Public Const KEYEVENTF_KEYUP = 2 Public Const KEYEVENTF_EXTENDEDKEY = 1 Sub Test() UserForm1.Show End Sub In the userform module: Private Sub CommandButton1_Click() ' keybd_event VK_SNAPSHOT, 0, 0, 0 DoEvents keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0 ' key down 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.Range("A1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 ActiveWorkbook.Close False End Sub -- Regards, Tom Ogilvy "Maynard" wrote in message ... I have a userform that I would like to print ("Print" commandbutton on userform). However, if I use the UserForm.PrintForm method, it doesn't the borders with the userform. Unfortunately, the title of the userform is important in my application, so I would like to be able to print the userform with the borders. I found a VB 4.0 API call that creates a picture object (new to VB 4.0) to do this. I was hoping to find a VBA article that would do the same. Does anybody know of anything that might help? Thanks! |
All times are GMT +1. The time now is 12:22 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com