Страницы: 1
RSS
Печать UserForm
 
Добрый вечер..  
Создала огромную форму с данными но теперь возник вопрос при необходимости  
вывести форму на печать.(без создания шаблона с пропиской всех ячеек)..  
Возможно это??  
Заранее благодарю всех кто откликнется..
 
1. В модуле формы UserForm1 вызов распечатки по нажатию кнопки CommandButton1:  
 
' Вывести форму на принтер  
Private Sub CommandButton1_Click()  
 PrintMe  
End Sub  
 
2. Код в стандартном модуле или в той же форме:  
 
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)  
 
Sub PrintMe()  
 Application.ScreenUpdating = False  
 Call keybd_event(&HA4, &H56, &H1, 0)  
 Call keybd_event(&H2C, &H79, &H1, 0)  
 Call keybd_event(&HA4, &H56, &H1 Or &H2, 0)  
 Call keybd_event(&H2C, &H79, &H1 Or &H2, 0)  
 DoEvents  
 With Workbooks.Add  
   With .Sheets(1).PageSetup  
     .Orientation = xlLandscape  
     .FitToPagesWide = 1  
     .FitToPagesTall = 1  
   End With  
   With .Sheets(1)  
     .Paste  
     .PrintOut  
   End With  
   .Close 0  
 End With  
 Application.ScreenUpdating = True  
End Sub
 
Спасибо огромное ZVI  
Вы мне очень помогли...с печатью разобралась одна проблемма осталась не вся она влезает..нет подгонки к странице...ну да ладно...и почему то надпись в Frame не попадает в печать...сама рамка печатается а надпись нет....  
Но всё равно спасибо огромное ещё раз
 
Подправил.  
 
1. Код в модуле формы UserForm1 - вызов распечатки по нажатию кнопки CommandButton1:  
 
' Вывести форму на принтер  
Private Sub CommandButton1_Click()  
 Application.OnTime Now, "PrintMe"  
End Sub  
 
2. Код в стандартном модуле или в той же форме:  
 
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags&, ByVal dwExtraInfo&)  
 
Sub PrintMe()  
 Application.ScreenUpdating = False  
 keybd_event &HA4, &H56, &H1, 0  
 keybd_event &H2C, &H79, &H1, 0  
 keybd_event &HA4, &H56, &H1 Or &H2, 0  
 keybd_event &H2C, &H79, &H1 Or &H2, 0  
 DoEvents  
 With Workbooks.Add  
   With .Sheets(1).PageSetup  
     .Orientation = xlLandscape  
     .Zoom = False  
     .FitToPagesWide = 1  
     .FitToPagesTall = 1  
   End With  
   With .Sheets(1)  
     .Paste  
     .Range("A1").Select  
     .PrintOut  
   End With  
   .Close 0  
 End With  
 Application.ScreenUpdating = True  
End Sub
 
Есть ещё один вариант - он намного проще, но никакой подгонки под размер страницы тут ожидать не приходится.  
 
Хотя, в большинстве случаев и такого варианта достаточно (я пользуюсь только таким - разве что предварительно меняю ориентацию листа в настройках принтера)  
 
Private Sub CommandButton1_Click()  
   Me.PrintForm  
End Sub
Страницы: 1
Читают тему
Наверх