18c0693f

Создание листа печати


Теперь, когда некоторая предварительная работа проделана, займемся основной работой по подготовке листа печати. Замечу, что, конечно, нажав кнопки OLE- и Fon-, можно приступить к печати листа, в таком виде, как он получился. После чего, нажать кнопки OLE+ и Fon+, вернув лист в исходное состояние. Однако это не лучший способ, поскольку остались кой-какие лишние детали, а главное при выключении была потеряна важная информация. Поскольку окончательное формирование листа печати является необратимой операцией, не позволяющей вернуться к исходному состоянию, то лучшим выходом является формирование дополнительного листа, специально предназначенного для печати.

Пятая кнопка на инструментальной панели с именем "КопияП" запускает макрос, готовящий лист печати. Приведу его текст:

Public Sub CopyForPrinting() 'подготавливает копию листа для печати Dim mySh As Worksheet Dim Ex As Boolean Dim curField As Range With ThisWorkbook Ex = False For Each mySh In .Worksheets If mySh.Name = "ЛистПечати" Then Ex = True: Exit For End If Next mySh If Not Ex Then .Worksheets.Add .ActiveSheet.Name = "ЛистПечати" .ActiveSheet.Move After:=Sheets("Заказ") End If 'Очистить область листа печати Set curField = .Worksheets("ЛистПечати").Range("A1:K56") curField.Clear 'Показ скрытых строк StrShow 'Копирование листа Set curField = .Worksheets("Заказ").Range("A1:K56") curField.Copy .Sheets("ЛистПечати").Activate .ActiveSheet.Range("A1").Select .ActiveSheet.PasteSpecial End With 'запуск макросов OleMinus FonMinus 'Скрыть лишние строки StrHide 'Дополнить нужной информацией AddInformation 'Удалить сетку и другие детали With ActiveWindow .DisplayGridlines = False 'сетка .DisplayHeadings = False 'заголовки .DisplayFormulas = False 'показ формул .DisplayZeros = False 'отображение нулей End With

End Sub

В работе процедуры можно выделить несколько этапов:


Приведу теперь тексты процедур StrHide и StrShow:

Public Sub StrHide() 'Эта процедура позволяет скрыть лишние строки Dim curField As Range, curField1 As Range Dim i As Integer Rows("1:7").Select Selection.EntireRow.Hidden = True Rows("10:14").Select Selection.EntireRow.Hidden = True Rows("17:18").Select Selection.EntireRow.Hidden = True Rows("27:28").Select Selection.EntireRow.Hidden = True Rows("48:49").Select Selection.EntireRow.Hidden = True

'Скрыть пустые строки в таблице заказов Set curField = Range("A34:D34") Set curField1 = Rows("34:34") For i = 0 To 11 If IsEmpty(curField.Offset(i)) Then curField1.Offset(i).Select Selection.EntireRow.Hidden = True End If Next i End Sub

В процедуре StrHide скрываются строки, не несущие информацию. При скрытии строк внутри таблицы заказа приходится проводить анализ того, заполнена ли строка таблицы информацией.

Процедура StrShow, показывающая скрытые строки, намного проще, поскольку достаточно указать весь требуемый диапазон строк и показать все строки, которые, возможно, были скрыты. Вот текст этой простой процедуры:

Public Sub StrShow() 'Показ скрытых строк Rows("1:56").Select Selection.EntireRow.Hidden = False End Sub

Для полноты картины осталось привести процедуру AddInformation, добавляющую информацию в ячейки листа печати. Вот ее текст:

Public Sub AddInformation() 'Эта процедура дополняет лист печати нужной информацией Dim MyCombo As Object With ThisWorkbook Set curField = .Worksheets("ЛистПечати").Range("D8") curField.Value = "Издательство: Родная Речь" curField.Font.Bold = True curField.Font.Size = 12 Set curField = .Worksheets("ЛистПечати").Range("H16") curField.Value = Date curField.Font.Bold = True curField.Font.Size = 14 Set curField = .Worksheets("ЛистПечати").Range("H29") Set MyCombo = .Worksheets("Заказ").OLEObjects("ListOfTeam").Object curField.Value = MyCombo.Text curField.Font.Bold = True curField.Font.Size = 12 End With End Sub

В завершение рассказа о подготовке листа печати давайте взглянем на то, что получается при нажатии кнопки "КопияП", ответственной за выполнение этой работы:


Рис. 7.13.  Лист печати

На этом и закончу обсуждение того, как придать интерактивность офисным документам.



В завершение рассказа о подготовке листа печати давайте взглянем на то, что получается при нажатии кнопки "КопияП", ответственной за выполнение этой работы:


Рис. 7.13.  Лист печати

На этом и закончу обсуждение того, как придать интерактивность офисным документам.

© 2003-2007 INTUIT.ru. Все права защищены.



Все публикации раздела