- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 2. Основы офисного программирования
- •Оглавление
- •Глава 6. Использование Win32 api 113
- •Глава 7. Использование шаблонов и надстроек 118
- •Глава 8. Разработка приложений с помощью Excel 122
- •Глава 9. Разработка приложений с помощью Word 223
- •Глава 10. Использование Automation при интегрировании компонентов Microsoft Office 256
- •Глава 11. Организация доступа к внешним данным 279
- •Глава 12. Общие рекомендации по разработке приложений 297
- •Глава 13. Разработка справочной системы 298
- •Глава 14. Дополнительные рекомендации 301
- •Пояснительная записка
- •Уровень предварительной подготовки слушателей
- •Образовательные цели и задачи
- •Знания и навыки, получаемые в ходе изучения курса
- •Содержание занятий
- •Вопросы для самостоятельного изучения
- •Содержание лабораторных работ
- •Итоговые работы
- •Введение
- •Глава 1.Общая характеристика возможностей vba
- •Глава 2.Основные принципы разработки приложений
- •Глава 3.Основные правила разработки интерфейса
- •Глава 4.Visual Basic для приложений
- •Глава 5.Введение в язык и редактор Visual Basic
- •5.1.Окно Редактора Visual Basic
- •5.2.Основные правила записи программ на vba
- •5.2.1. Описания в программах на языке vba
- •5.2.2. Структуризация программ vba и правила записи кода процедур
- •5.2.3. Использование параметров
- •5.2.4. Типы данных vba
- •5.2.5. Описания переменных
- •5.2.6. Объекты в программах на vba и объектные переменные
- •5.2.7. Создание объектов пользователя
- •5.2.8. Описание и использование констант
- •5.2.9. Массивы в vba
- •5.2.10. Описание типов данных пользователя
- •5.2.11. Запись выражений на vba
- •5.2.12. Рекурсивные вычисления
- •5.2.13. Процедуры-подпрограммы
- •5.2.14. Процедуры-функции
- •5.2.15. Процедуры-свойства
- •5.2.16. Создание процедур
- •5.2.17. Управляющие структуры vba и события
- •5.3.Запуск программ
- •5.4.Отладка программ
- •5.5.Обработка ошибок
- •5.6.Преобразования типов
- •5.7.Функции для работы с датами и временем
- •5.8.Управление файлами
- •5.9.Функции проверки
- •5.10.Функции работы со строками
- •5.11.Взаимодействие с пользователем
- •5.12.Пользовательские формы и диалоговые окна
- •5.13.Создание пользовательских меню и панелей инструментов
- •5.14.Разработка контекстного меню
- •5.15.Открытие проектов, экспорт и импорт
- •Глава 6.Использование Win32 api
- •Глава 7.Использование шаблонов и надстроек
- •Глава 8.Разработка приложений с помощью Excel
- •8.1.Иерархия объектов Excel
- •8.2.Обзор основных объектов Excel
- •8.2.1. Объект Application
- •8.2.2. Объект Workbook
- •8.2.3. Объект WorkSheet
- •8.2.4. Объект Range
- •8.2.5. Графические объекты
- •8.2.6. Элементы управления и обработка событий
- •8.3.Представление данных и вычисления в таблицах Excel
- •8.3.1. Ссылки на ячейки рабочих листов Excel
- •8.3.2. Работа с формулами
- •8.3.3. Использование функций
- •8.3.4. Создание пользовательских функций рабочего листа
- •8.3.5. Массивы Excel
- •8.3.6. Определение связей между таблицами
- •8.3.7. Консолидация данных
- •8.3.8. Форматирование данных в таблицах
- •8.4.Анализ данных и подведение итогов
- •8.4.1. Создание сводных таблиц
- •8.4.2. Подведение промежуточных итогов
- •8.4.3. Определение частичных сумм
- •8.4.4. Создание диаграмм
- •8.4.5. Работа со структурой данных
- •8.5.Подбор параметров и поиск решения
- •8.6.Использование сценариев
- •8.7.Поиск и отбор данных в таблицах Excel
- •8.7.1. Использование автофильтра
- •8.7.2. Работа с расширенным фильтром
- •8.7.3. Поиск данных по подписям строк и столбцов
- •8.8.Упорядочение данных в таблицах
- •8.9.Защита приложений Excel
- •8.9.1. Защита от ошибок при вводе данных
- •8.9.2. Защита данных от несанкционированного доступа
- •Глава 9.Разработка приложений с помощью Word
- •9.1.Модель объектов Word
- •9.1.1. Объект Document
- •9.1.2. Другие дочерние объекты приложения Word
- •9.2.Работа с полями
- •9.3.Переменные документа
- •9.4.Использование формул в документах Word
- •9.5.Использование элементов управления в документах Word
- •9.6.Создание шаблонов документов на основе таблиц
- •9.7.Защита документов Word и кода
- •Глава 10.Использование Automation при интегрировании компонентов Microsoft Office
- •10.1.Технология ActiveX
- •10.2.Компонентная модель объектов, внедрение и связывание
- •10.3.Создание объектов Automation
- •10.4.Получение доступа к объекту
- •10.5.Пример вычислений в Access с помощью Excel
- •10.6.Управление связанными и внедренными объектами с помощью программного кода
- •Глава 11.Организация доступа к внешним данным
- •11.1.Доступ к данным из клиентских приложений
- •11.2.Интерфейс odbc
- •11.3.Использование dao для доступа к данным
- •11.3.1. Модель объектов dao
- •11.3.2. Создание рабочей области и открытие источника данных
- •11.3.3. Исследование структуры таблиц бд
- •11.3.4. Операции над данными
- •11.4.Интеграция данных и работа в сети
- •11.4.1. Доступ к данным Excel из субд Access
- •11.5.Выбор метода доступа к данным
- •Глава 12.Общие рекомендации по разработке приложений
- •Глава 13.Разработка справочной системы
- •13.1.Использование всплывающих подсказок
- •13.2.Контекстная справка «Что это такое?»
- •13.3.Подготовка файла справки
- •Глава 14.Дополнительные рекомендации Установка приложения
- •14.1.Повышение эффективности работы приложения
- •Приложение 1. Система автоматизации подготовки документов на основе пакета Microsoft Office
- •Требования к системе Office case
- •Интеллектуальность документа
- •Однократный ввод данных и их совместное использование
- •Дружественный интерфейс – «ориентация на человека»
- •Мобильность
- •Независимость от версии Microsoft Office
- •Поддержка языка разметки документов xml
- •Общий сценарий использования
- •Структура Office case
- •Структура скрытого раздела документа
- •В. Таблица ограничений
- •Подсистемы программного проекта документа Менеджер закладок
- •Менеджер классификаторов
- •Подсистема управления интерфейсом пользователя
- •Подсистема контроля данных
- •Подсистема информационного обмена
- •Дизайнер системы документов
- •Редактор классификаторов
- •Редактор правил
- •Редактор закладок
- •Редактор блоков данных
- •Пример применения Office case Постановка задачи
- •Реализация Документы «Подсистемы автоматизации подготовки отчетов»
- •Требования к квалификации пользователей
- •Установка приложения и подготовка к работе
- •Интерфейс первичных документов
- •Интерфейс сводных документов
- •Приложение 2. Автоматизированное рабочее место «Оператор автозаправочной станции»
- •Разработка структуры рабочей книги
- •Настройка пользовательского интерфейса
- •Разработка экранных форм
- •Приложение 3. Автоматизация заполнения бланка с помощью программы текстового процессора Word Постановка задачи
- •Разработка документа
- •Разработка экранной формы
- •Список литературы
8.3.8. Форматирование данных в таблицах
При работе с электронными таблицами бывает необходимо не только ввести табличные данные и выполнить расчеты, но и представить информацию в нужном формате.
При работе с Excel форматирование можно выполнять на уровне страниц, строк и столбцов, отдельных ячеек и символов текста, представляющих значения ячеек.
Для определения формата страницы следует выполнить команду Параметры страницы меню Файл. В открывшемся диалоговом окне, выбрав соответствующую вкладку, можно определить характеристики страниц (размер бумаги и ориентацию, а также другие свойства), размеры полей, ввести или отменить колонтитулы, выводимые при печати внизу и вверху каждой страницы, задать способ печати содержимого рабочих листов.
Ниже приведена процедура форматирования страницы с помощью которой устанавливаются следующие параметры: размер бумаги – A4; ориентация – книжная («портрет»); качество печати – 300 точек на дюйм; в центра верхнего колонтитула выводится строка "Пример форматирования страницы"; в нижний колонтитул включается дата (слева), номер страницы (в центре) и время (справа); размеры всех полей – 2 см (размеры переведены в дюймы); отступы колонтитулов – по 1,3 см (переведены в дюймы); таблица при печати центрируется по горизонтали и по вертикали; сетка не печатается; комментарии не печатаются; номер первой страницы определяется автоматически; установлены в качестве сквозных первая строка и первый столбец (если таблица не войдет при печати на одну страницу, они будут выводиться на каждой странице); если таблица разбивается на несколько страниц, то порядок их печати будет «вниз, затем вправо». Текст процедуры можно получить с помощью средств макрогенерации.
Sub Параметры_Страницы()
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = "$A:$A"
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "Пример форматирования страницы"
.RightHeader = ""
.LeftFooter = "&D"
.CenterFooter = "&P"
.RightFooter = "&T"
.LeftMargin = _
Application.InchesToPoints(0.78740157480315)
.RightMargin = _
Application.InchesToPoints(0.78740157480315)
.TopMargin = _
Application.InchesToPoints(0.78740157480315)
.BottomMargin = _
Application.InchesToPoints(0.78740157480315)
.HeaderMargin = _
Application.InchesToPoints(0.511811023622047)
.FooterMargin = _
Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 300
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
End With
End Sub
Excel позволяет вставить разметку страниц в таблицу «принудительно» с помощью команды Разрыв страницы меню Вставка. Эта команда выполняется программно с помощью оператора
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Часть информации можно задать непосредственно с помощью команды Печать в меню Файл.
С помощью автоформатирования автоматически выполняется форматирование данных на рабочем листе. Для его активизации следует выделить таблицу, подлежащую форматированию, и выполнить команду Автоформат в меню Формат. В открывшемся диалоговом окне можно выбрать из списка подходящий формат, просматривая образцы. Изменить некоторые параметры можно с помощью кнопки Параметры. Для программного обращения к этой команде используется оператор
Selection.AutoFormat _
Format:=xlRangeAutoFormatClassic1, Number:=True, _
Font:= False, Alignment:=True, Border:=True, _
Pattern:=True, Width:=True
который указывает выбранный из списка существующих формат и применяемые параметры форматирования.
Excel предоставляет возможность работы с набором шрифтов. Шрифт устанавливается при форматировании ячейки. Для установки шрифта следует выделить нужную ячейку или диапазон ячеек. Применить установку шрифта или стиля можно не только ко всей ячейке, но и к отдельному фрагменту текста, размещенного в ячейке. Excel дает также возможность изменить цвет шрифта, который используется для ввода и отображения данных (через команду форматирования ячейки и вкладку «Шрифт»).
Если в ячейку вводится большой текстовый фрагмент, то при форматировании ячейки можно включить режим переноса по словам, чтобы сформатировать абзац внутри ячейки. В этом режиме текст будет выводиться не в одну строку, а будет формироваться абзац по ширине столбца, при этом высота ячейки автоматически регулируется таким образом, чтобы весь текстовый фрагмент поместился в ячейке.
Для улучшения представления данных, повышения их наглядности можно изменить параметры выравнивания (горизонтального и вертикального), а также изменить ориентацию текста, наклон строк. По умолчанию для ячеек установлены следующие типы горизонтального выравнивания для данных: числа выравниваются по правому краю, текст – по левому краю, логические значения – по центру, ошибки – по центру. Параметры выравнивания можно изменить с помощью соответствующих установок на вкладке «Выравнивание» диалогового окна форматирования ячеек.
При вводе заголовков таблиц или надписей на рабочих листах их приходится размещать в нескольких столбцах и соответственно центрировать. Excel предоставляет для автоматизации этих действий возможность центрирования текста по нескольким выделенным столбцам. Кроме того, существует возможность объединения нескольких соседних ячеек, но используя эту операцию, следует помнить, что объединение ячеек может помешать выполнению некоторых команд при работе с таблицей (например, команд меню Данные).
Данные, представленные виде таблицы, в Excel можно оформить на профессиональном уровне и придать им более привлекательный вид с помощью обрамления и заливки ячеек. Существуют разные типы обрамления, они отличаются типом и толщиной линий, цветом. Для выделенных ячеек можно также установить цвет фона (заливки) и узор. Эти установки можно сделать на вкладках «Границы» и «Вид» диалогового окна форматирования ячеек.
Для изменения формата собственно данных следует выделить содержащие эти данные ячейки и изменить их формат с помощью команды ФорматЯчейки, установив нужные параметры на вкладке «Число» диалогового окна. При форматировании данных сначала выбирается из списка нужный формат числа (тип данных), а затем, если это необходимо для выбранного формата, настраиваются его параметры (например, количество знаков после запятой, присутствие разделителя или названия денежной единицы).
Определить нужные значения параметров форматирования можно с помощью справочной системы или путем записи макроса, при выполнении которого осуществляются все необходимые установки. Например:
Sub Формат_ячейки()
Selection.NumberFormat = "h:mm:ss"
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.ShrinkToFit = True
.MergeCells = False
End With
With Selection.Font
.Name = "Arial Cyr"
.FontStyle = "обычный"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleDoubleAccounting
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Selection.Locked = True
Selection.FormulaHidden = False
End Sub
Строка "h:mm:ss" в данном примере определяет формат представления времени («часы:минуты:секунды»). Эта строка представляет собой «шаблон», в соответствии с которым данные будут отображаться в ячейке при просмотре рабочего листа. Пользователь может определить собственные форматы для ввода специфических данных или для ускорения их поиска (например, формат номеров телефонов, формат преджстаавления денежных сумм).
Для ввода нового формата следует выполнить следующие действия:
выполнить команду ФорматЯчейки;
в диалоговом окне открыть вкладку «Число»;
из списка «Числовые форматы» выбрать категорию «(все форматы)»;
в списке «Тип» выбрать код формата, который наиболее соответствует тому формату, который создается;
в строке ввода исправить формат, приведя его к нужному виду (действия по составлению кода формата описаны ниже);
щелкнуть на кнопке OK для сохранения нового формата.
Ненужные форматы могут быть удалены в том же диалоговом окне (кнопка Удалить).
Коды форматов состоят последовательных секций для определения формата положительных чисел, формата отрицательных чисел, формата нулевых значений, формата текста.
Секции отделяются друг от друга точкой с запятой (символом ‘;’). Если в коде отсутствует секция, определяющая формат текста, то текст будет вводиться без форматирования. Если код будет состоять только из двух секций, то первая часть будет задавать формат положительных чисел и нулей, а вторая – формат отрицательных чисел. Если код состоит только из одной секции, то все числа будут принимать формат, заданный в ней. Символы, используемые при описании кода, приведены в табл. 3.
Например, с помощью шаблона, записанного в строке
+# ##0,00_ руб.;[Красный]-# ##0,00_ руб.;[Синий]0,00_ руб.;[Зеленый]"Ошибка"
для ячейки можно установить следующий формат: перед положительными и отрицательными числами отображается знак (плюс или минус); значения округляются до двух десятичных знаков после запятой; тысячи в записи числа отделяются разделителем; отрицательные числа показываются красным цветом, а нулевые значения – синим; после чисел через пробел добавляется наименование «руб.»; если вводится значение, которое Excel не распознает как число, зеленым цветом выводится слово "Ошибка".
Применить этот нестандартный формат в программе можно с помощью оператора
Selection.NumberFormat = _
"+#,##0.00_ руб\.;[Red]-#,##0.00_ руб\.;[Blue]0.00_ руб\.;[Green]""Ошибка"""
(Эта строка не соответствует той, которая вводится при определении формата в диалоговом окне форматирования ячейки, так как в программе на VBA запись должна соответствовать правилам языка VBA.)
Можно скопировать формат отдельной ячейки присвоить его целому диапазону ячеек. Для этого можно воспользоваться командами Копировать и Специальная вставка меню Правка, но можно также воспользоваться и кнопкой Формат по образцу стандартной панели инструментов.
Стиль – это набор всех параметров форматирования, одновременно присваиваемых выделенным ячейкам. Удобно ввести свой стиль, если часто используется одно и то же сочетание параметров форматирования (например, сочетание шрифта, размера символов, их начертания, шаблона для ввода данных и т.д.). При работе со стилями при изменении некоторых параметров стиля автоматически будут переформатированы все ячейки всех рабочих листов, отформатированные этим стилем. Для создания нового стиля или изменения существующего предусмотрена команда ФорматСтиль.
Для строк и столбцов рабочего листа можно задать их высоту и ширину соответственно. Столбцы и строки рабочего листа можно скрыть (например: при печати отчета можно скрыть столбцы, содержащие промежуточные результаты). Эти действия выполняются через меню формат (команды Строка и Столбец).
Сгенерировать нужный код можно с помощью средств записи макросов.
При разработке приложений на базе Excel можно использовать и команду условного форматирования. Например, приведенный ниже код устанавливает следующий формат: строка «отлично» отображается красным цветом, «хорошо» – зеленым, «удовлетворительно» – синим, а «неудовлетворительно» отображается цветом, установленным при обычном форматировании ячейки.
Sub Условное_форматирование()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""отлично"""
Selection.FormatConditions(1).Font.ColorIndex = 3
Selection.FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""хорошо"""
Selection.FormatConditions(2).Font.ColorIndex = 50
Selection.FormatConditions.Add _
Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""удовлетворительно"""
Selection.FormatConditions(3).Font.ColorIndex = 55
End Sub
При добавлении каждого нового условия можно задать соответствующие ему параметры форматирования (шрифт для текста, границу и заливку для ячейки).
Установленный формат можно изменять. Например, следующий оператор добавляет двойное подчеркивание к параметрам, соответствующим первому условию:
Selection.FormatConditions(1).Font.Underline=xlUnderlineStyleDouble
Пользователь может задать при определении условного формата различные операции сравнения. Например, в следующем коде устатавливается зеленый фон и граница для ячеек, значения которых попадают в диапазон от 3 до 5:
Selection.FormatConditions.Delete
Selection.FormatConditions.Add _
Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="3", Formula2:="5"
With Selection.FormatConditions(1).Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.FormatConditions(1).Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.FormatConditions(1).Borders(xlTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.FormatConditions(1).Interior.ColorIndex = 4
Условия могут налагаться как на значение ячейки, так и на формулу, записанную в ячейку. Код, соответствующий различным условиям и форматам, можно получить с помощью средств макрогенерации. Более подробная информация о средствах условного форматирования содержится в справочной системе.
Если во время работы с таблицей она не отображается на экране целиком и возникает необходимость просматривать параллельно две ее части, удаленные друг от друга, можно разбить окно на две части с помощью вешки разбивки, находящейся в верхней части вертикальной полосы прокрутки и правой части горизонтальной полосы. Программным способом установить вешку разбивки на нужном расстоянии от верхней и левой границ окна рабочего листа можно с помощью операторов вида:
ActiveWindow.SplitRow = 1
ActiveWindow.SplitColumn = 1
Эти операторы «закрепляют» в левой части окна один столбец, а сверху – одну строку, которые могут содержать, например, заголовки.
