Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МУ РГР

.pdf
Скачиваний:
21
Добавлен:
10.03.2016
Размер:
1.13 Mб
Скачать

 

 

 

1.

Сделать кнопку в файле на автозаполнение строк в столбце А днями недели.

 

Excel

2.

Пользователь выделяет ячейку, всплывает подсказка к ней.

 

3.

Отсортировать слова во введенной символьной строке по возрастанию длины

 

 

 

 

 

 

 

слов. Результат вывести на экран.

 

 

 

 

 

 

 

 

 

 

1.

Привести пример форматирования выделенного абзаца.

 

Word

2.

Отсортировать слова во введенной символьной строке по алфавиту. Результат

 

 

вывести на экран.

 

 

 

 

22

 

 

3.

При открытии файла выводить сообщение со статистикой о файле.

 

 

 

 

 

 

 

 

 

1.

Посчитать количество столбцов в в и ячеек в выделенной области.

 

Excel 2. Посчитать количество открытых книг в данный момент.

 

 

 

3.

Кнопка в файле на автозаполнение строк простыми числами от -10 до 15.

 

 

 

 

 

 

 

 

 

 

1.

Сделать свою окно-заставку и включить музыку.

 

Word

2.

Введенную символьную строку разделить на подстроки заданной длины.

 

 

Результирующие подстроки вывести в столбик на экран.

 

 

 

 

 

 

 

3.

Вызвать другую программу.

23

 

 

 

 

 

 

 

 

1.

Запросить пользователя ввести номер столбца, посчитать количество

 

 

 

 

Excel

 

положительных чисел в столбце таблицы с введенным номером.

 

2.

3 листа переименовываются согласно названиям в ячейках А1, А2, А3.

 

 

 

 

 

 

3.

Сделать кнопку в файле на автозаполнение строк месяцами года.

 

 

 

 

 

 

 

 

 

 

1.

Вывод заданной фразы n раз и подсчет количества символов.

 

Word 2. Сворачивание программы при нажатии на кнопку в файле.

 

 

 

3.

Вывести статистику по файлу и по приложению.

24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

Определить количество дней между двумя введенными датами.

 

 

 

 

 

 

 

 

 

 

2.

Вставлять через каждые 2 ячейки ячейку, содержащую текст «вставка теста».

 

 

 

Excel

 

 

 

3.

Вывести сообщение о том чего больше — отрицательных ячеек или

 

 

 

 

 

 

 

 

 

 

положительных или равных нулю на листе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

Изменить масштаб просмотра документа и подсчитать и вевести в

 

 

 

 

 

диалоговом окне среднее арифметическое 4 чисел.

 

 

 

Word

 

 

 

 

2.

Определить количество полных недель между двумя введенными датами.

 

 

 

 

 

 

 

 

 

 

3.

Сделать таблицу, в столбцах подсчитать сумму и среднее арифметическое.

 

251. По введенной дате выдать ее словесное описание.

2. Подсчитать количество открытых книг в данный момент.

Excel 3. Разработать приложение, выполняющее любые арифметические операции над числами, вводимыми в поля диалогового окна «Калькулятор». Операция, выполняемая над числами должна выбираться из списка.

2.2 Методические указания к выполнению

Макрос - это запрограммированная последовательность действий, команд. Можно запускать макрос сколько угодно раз, заставляя программу выполнять последовательность нужных вам действий. Макросы в VBA можно писать 2 способами: макрорекордером и с помощью редактора VBA.

Для работы с макросами необходимо включить выполнение макросов. Параметры безопасности макросов можно настроить в центре управления безопасностью. Однако при работе в локальной сети организации системный администратор может изменить установленный по умолчанию параметр и

21

запретить изменять параметры безопасности макросов. Итак, настроим параметры Word так, чтобы макросы запускались:

1)Откройте Word.

2)Воспользуйтесь лентой Файл >> Параметры;

3)Выберите Центр управления безопасностью;

4)Выберите Параметры центра управления безопасностью, а затем Параметры макросов.

5)Выберите «Включить все макросы».

6)Подтвердите свой выбор, нажав OK. Перезагрузить приложение. Точно также настраивается безопасность макросов в Excel.

Работа с макросами осуществляется с помощью панели инструментов Код на ленте Разработчик. Эта лента является настраиваемой, чтобы она отобразилась в меню рядом с другими лентами, надо нажать Файл >>

Параметры >> Настройка ленты >> и выбрать категорию Основные,

поставить галочку напротив пункта Показывать вкладку Разработчик. Рассмотрим некоторые кнопки этой ленты (рисунок 22).

Рисунок 22 – Выпадающее меню инструмента «Макрос»

Условные обозначения на рисунке 22: 1 – вызов редактора VBA;

2 – список макросов, которые существуют;

3 – вызов макрорекордера, начало записи;

4– пауза\остановка при записи макроса;

5- изменение безопасности макросов;

6- инструменты управления (кнопки, надписи, фреймы, переключатели, списки и т.п.);

7- режим включения\отключения конструирования макросов.

Часть 1. Макрорекордер.

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

Чтобы включить запись макрорекордером выберите на ленте

Разработчик - Код - пункт Запись макроса (рисунок 23). После включения и

22

выполнения действий записи макроса, запись можно остановить, нажав на кнопку «Стоп» на ленте Разработчик в группе Код. Нужен макрос, чтобы он запускался при открытии файла, - дайте имя ему autoexec.

Рисунок 23 – Меню записи макрорекордера

Задание 1. Word. Нужно написать макрос с помощью макрорекордера, который меняет цвет выделения текста 5 символов левее от курсора на синий.

1)Напечатать любой текст на листе Word, поставить курсор в середину

текста.

2)На ленте Разработчик - Код выбрать пункт Запись макроса.

3)Назначить имя макросу Macros1_cvet, выбрать «макрос доступен для»

выбрать имя текущего файла и назначить макрос сочетанию клавиш Ctrl+G, нажмите ОК. Задается новое сочетание клавиш, нажать назначить и закрыть.

Меню выбора сочетания клавиш закрывается, возле курсора снизу появляется изображение кассеты – идет запись макроса.

4)С помощью клавиш Shift и стрелочки «←» выделить 5 символов, затем мышкой навести на Цвет выделения текста, выбрать синий цвет для выделения.

5)Остановить запись макроса, нажав на Остановить макрос в группе

Код ленты Разработчик.

6)Поставить курсор в любое место текста и нажать сочетания клавиш Ctrl+D, которые были заданы в п.3 для макроса выделения.

Врезультате цвет пяти левых символов от курсора поменялся. Чтобы вызвать повторно - поставьте курсор в любое, другое место и нажмите Ctrl+G. Примечание: сочетания кнопок можно задавать любые на ваш выбор.

1)Задание 2. Excel. Написать макрос с помощью макрорекордера, который добавляет лист к существующим в рабочей книге.

2)В Excel открываем ленту Разработчик – Код - Запись макроса.

3)Назначаем имя макросу Macros2_dobavlenie_listov, выбираем «макрос доступен для» выбрать имя текущего файла и назначить макрос сочетанию клавиш Ctrl+D, нажимаем ОК. Меню выбора сочетания клавиш закрывается, возле курсора появляется изображение кассеты – идет запись макроса.

4)Правой клавишей мыши нажимаем на ярлычок любого листа. В контекстном меню выбираем пункт Вставить Лист. Нажимаем ОК и останавливаем запись макроса, нажав Остановить макрос в группе Код.

23

5)Поставить курсор на любой лист в рабочей книге и нажать сочетания клавиш Ctrl+D, которые были заданы в п.2 для макроса добавления листа.

6)В результате был создан еще один лист в книге. Чтобы вызвать повторно - поставьте курсор в любое, другое место в рабочей книге и нажмите

Ctrl+D.

Одни макросы не могут всегда удовлетворить все потребности. Записанный макрорекордером макрос может только воспроизводить без отклонений каждое действие в той же последовательности, в которой первоначально выполнялись действия. Редактор VBA (вызов кнопкой 1 на рисунке 22) можно использовать для улучшения макросов, записанных макрорекордером, значительно повышая возможности. С помощью VBA можно создавать пользовательские меню, диалоговые окна и панели инструментов, формы, изменяющие интерфейс всем известных приложений.

Задание 3. Word. Написать макрос с помощью макрорекордера, вставляющий рисунок из папки «Мои документы».

1)Открываем ленту Разработчик >> Код, нажимаем кнопку Запись макроса.

2)Назначаем имя макросу Macros3_vstavka_risunka, выбираем «макрос доступен для» выбрать имя текущего файла и назначить макрос сочетанию клавиш Ctrl+G, нажимаем ОК - идет запись макроса.

3)На ленте Вставка в группе Иллюстрации выбираем Рисунок. Далее указываем путь размещения файла в диалоговом меню (Мои рисунки) и выбираем файл. Нажимаем Вставить (рисунок вставлен) и останавливаем запись макроса, нажав на Остановить макрос в группе Код ленты

Разработчик.

4)Поставить курсор на любое место документа, нажимаем сочетание клавиш Ctrl+G, которые были заданы в п.2 для макроса.

Врезультате был вставлен рисунок в файл.

Часть 2. Редактор VBA.

Запись макросов имеет некоторые ограничения, поскольку есть множество средств, доступ к которым нельзя получить с помощью мыши, клавиатуры или команд меню. Например, для работы с Excel VBA имеет несколько десятков информационных функций, которые возвращают данные о ячейках, рабочих листах, рабочем пространстве и о многом другом. Кроме того, VBA позволяет создавать программные структуры управления такие, как циклы, ветвления и другие. Чтобы получить доступ к этим элементам макросов, придется писать собственные подпрограммы VBA. Это занятие на самом деле проще, чем может показаться, так как все, что нужно сделать – ввести несколько операторов в модуль.

Объекты VBA - это кнопки, элементы меню, документы, статистические данные, фрагменты документа, символы, интервалы, рабочая область и даже сам документ. Почти все то, что можно увидеть на экране работающего приложения является объектом. VBA работает в режимах включения\отключения конструктора (рисунок 22 кнопка 7). В режиме

24

конструктора элементы строятся и программируются, а в режиме отключенного конструктора функционируют (выполняются).

Чтобы написать макрос для какого-либо приложения (Word или Excel, например), нужно выбрать объект и действие, которое вызывает выполнение этого макроса. Например, объект - кнопка, действие – нажатие (Click) на эту кнопку. Чтобы сделать программируемую кнопку, нужно проделать действия:

1)В приложении в любом месте документа ставим курсор и открываем ленту Разработчик, группа Элементы управления, нажимаем Режим конструктора, выбираем Кнопка (элемент ActiveX). На том месте, где стоял курсор, появилась кнопка.

2)Вызываем редактор VBA для того, чтобы изменить свойства и задать программный код кнопке на закрытие документа (программируем кнопку) – нажимаем на кнопку на ленте Разработчик - Visual Basic (кнопка 1 на рисунке 22). В открывшемся окне вызываем окно свойств объекта, выбрав в пункте меню View - Properties Window (кнопка 7 на рисунке 22).

3)Возникло окно редактора (рисунок 24), в котором кнопка 1 - дерево объектов, 2 - окно свойств (здесь задаются основные характеристики объекта такие, как размер, цвет, надпись, системное имя, координаты), 3 - название объекта, который мы программируем, 4 - задается действие с нашим объектом, кнопки 5 и 6 - запуска и остановки выполнения программного кода макроса, 8 - программный код нашего объекта.

4)В открывшемся окне мы видим программный код нашей кнопки:

Private Sub CommandButton1_Click()

End Sub

Это процедура, нацеленная на событие Click (нажатие) объекта-кнопки CommandButton1. Sub - начало процедуры, End Sub - ее конец. Чтобы назначить кнопке что-либо делать, программный код следует писать внутри этой процедуры.

Рисунок 24 – Окно редактора VBA 25

Работа с объектами. 1) На примере Word.

Приложение представлено объектом Application. Это так называемый глобальный объект, и во многих ситуациях его имя можно не упоминать. В свойствах этого объекта содержатся открытые окна, документы, всевозможные параметры рабочей среды программы и многое другое. Заголовок окна задается свойством Caption:

Application.Caption = «Мое приложение»

Строчка пишется внутри кода существующей кнопки, 8 на рисунке 24.

В свойствах ActiveWindow, ActiveDocument содержатся ссылки на текущее окно. Максимизировать текущее окно, сохраняя текущий документ:

Application.ActiveWindow.WindowState = wdWindowStateMaximize Application.ActiveDocument.Save

Семейство CommandBars представляет панели инструментов и панели меню. Например, чтобы стали огромными значки в окне Word можно написать:

Application.CommandBars.LargeBattons = True

Свойство StatusBar позволяет записать произвольный текст в строку состояния:

Application.StatusBar = «Выполняется макрос - видите меня внизу слева?» Метод Quit завершает работу Word и закрывает его окно:

Application.Quit

Закрыть с сохранением открытых документов можно с помощью кода:

Application.Quit wdSaveChanges

«Сохранить» документ и «Сохранить как»:

ActiveDocument.Save

ActiveDocument.SaveAs «C:\1.docx»

Семейство Documents, содержащееся в свойстве объекта Application, представляет все открытые документы. Создать новый или открыть существующий документ можно при помощи методов того семейства. Метод Add создает новый документ на основе указанного шаблона (без указания документ будет создан на основе шаблона «Обычный»). Как правило, используют объектную переменную типа Document, чтобы «запомнить» ссылку на вновь созданный документ:

Dim MyDoc As Document

Set MyDoc = Documents.Add(«C:\Program Files\Microsoft Office\Templates\1049 \My.dot»)

Создать новый документ можно и другим способом:

Documents.Add DocumentType:=wdNewBlankDocument

Open используют для открытия уже существующего документа на диске:

Set MyDoc = Documents.Open(«C:\1.docx»)

или можно написать таким образом:

Documents().Open FileName:=(«C:\1.docx»)

Обращаться к членам семейства Documents можно как по номерам, так и по именам. Например, следующий код закроет документ с именем «Документ 1» и сделает активным четвертый из остающихся открытыми документов (если

26

документа с именем «Документ 1» среди открытых документов нет или если открыто менее 4 документов, то возникает ошибка выполнения):

Documents(«Документ1»).Close

Documents(4).Activate

Метод Close используется для закрытия документов. Закрыть все документы с сохранением по подтверждению пользователя:

Documents.Close wdPromptToSaveChanges

Закрыть текущий документ без сохранения:

ActiveDocument.Close wdDoNotSaveChanges

Чтобы получить доступ к объекту, необходимо составить ссылку на него, начав с самого общего наружного объекта, за которым должна следовать точка и следующий вложенный в него объект, и так далее до тех пор, пока не будет достигнут нужный объект. Например, на документ Документ1.docx выглядит так: Application.Documents(«Документ1.docx»).

Однако делать каждый раз ссылку на текущий объект необязательно, если этот объект активный. Например, если приложение Word активно, достаточно сделать относительную ссылку на сам документ:

Documents(«Документ 1.docx»).

Таким образом, почти всегда можно не включать в описание объектов ссылку на приложение и на рабочую книгу или документ. Однако при этом необходимо точно знать, какой объект активен в момент появления оператора с пропущенной спецификацией объекта. Пропуск спецификации объекта делает процедуры более простыми для восприятия. Кроме того, это позволяет применить этот же программный код к другому рабочему листу или документу, не меняя имя рабочего листа или документа в ссылках. В дополнение к именованным листам или рабочим книгам можно использовать такие объекты, как ActiveWorkbook (активная рабочая книга). ActiveDocument (активный документ), ActiveWindow (активное окно) для того, чтобы иметь возможность ссылаться на активные объекты, не указывая их имен.

Для того чтобы объект выполнил какую-либо операцию необходимо задать метод. Многие методы имеют аргументы, задающие параметры выполняемых действий. Синтаксис команды применения метода объекта:

Объект.Метод aргумент:=значение

Если строка кода не поместилась в 1 строке, то она переносится на следующую строку с помощью знака «_» с предшествующим пробелом.

Для изменения состояния объекта необходимо задать новые значения его свойств. Синтаксис команды изменения свойств:

Объект.Свойство = ЗначениеСвойства

Например, для установки во фрагменте текста (объект Selection) для 8-го символа (объектCharacters(8)) начертание полужирный (свойство Bold), которое имеет 2 значения True или False (установлено или не установлено) пишем:

Selection.Characters(8).Italic = True

Для выделения жирным шрифтом (Bold) первые 10 символов, код:

ActiveDocument.Range(Start:=0, End:=9).Bold = True

Для вставки (InsertBefore) в начале документа строки «QWERTY»:

27

ActiveDocument.Range(Start:=0, End:=0).InsertBefore «QWERTY»

Семейства Paragraphs представляет все абзацы документа, семейство Sentences – все предложения, в семестве Words содержатся слова, а в семействе Characters – символы документа. Все эти семейства устроены одинаковым образом.

Свойства First и Last указывают на первый и последний элементы множеств. Count считает число элементов в семействе. И для всех этих семейств в любом случае в результате возвращается объект типа Range.

Таблицы в документе представлены объектами типа Table. Каждая состоит из строк (Row) и столбцов (Column). Таблицу можно рассматривать как набор ячеек типа Cell. Удаление первого столбца в первой таблице документа:

ActiveDocument.Tables(1).Columns(1).Delete

2) На примере Excel.

В свойстве Workbooks содержится семейство открытых рабочих книг, а в семействе Worksheets – семейство рабочих листов, не всех открытых книг, а только активной книги. Соответственно семейство ActiveWorkbook указывает на активную рабочую книгу. А вот семейства ActiveWorksheet не существует, вместо него используется свойство ActiveSheet, которое указывает на активный лист активной книги. Свойство ThisWorkbook указывает на ту рабочую книгу, в которой содержится выполняемый в данный момент времени макрос.

Метод «Сохранить как» работает через следующий код:

Application.ActiveWorkbook.SaveAs «MyWorkBook»

Делает активной вторую из открытых книг:

Application.Workbooks(2).Activate

Закрыть книгу без сохранения изменений (сравните как это в Word): Application.Workbook(«MyBook»).Close SaveChanges:=False

Открыть книгу, хранящуюся в файле с заданным именем: Application.Workbook.Open “С:\MyBook.xlsx”

ActiveSheet объекта Application возвращает активный лист активной книги. Изменить имя текущего листа:

Application.ActiveSheet.Name = “Январь” Увеличение масштаба активного окна:

Application.ActiveWindow.Zoom = 150

Функция пересчета всех рабочих листов всех открытых книг Application.Calculate. При помощи метода Add можно создавать новые листы.

Например, вставить в цикле (N) в книгу 12 новых листов, соответствующие 12 названиям месяцев, названия взяты из Excel-вских списков:

ActiveWorkbook.Sheets.Add Count:=12 For N= 1 To 12 ActiveWorkbooks.Sheets(N).Name = _

Format(DateSerial(1, N, 1), “mmmm”)

Next N

Вставка листа диаграммы осуществляется кодом (Count – число листов):

ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count) Type:=xlChart

28

Удалить лист «Обзор2014» можно кодом:

Worksheets(«Обзор2014»).Delete

Скрыть лист с помощью свойства Visible: Worksheets(«Обзор2014»).Visible = False

Переместить лист в заданную позицию (в примере – в конец книги): Worksheets(«Обзор2014»).Move, Worksheets(Worksheets.Count)

Копировать лист «Бланк» после листа «Обзор 2014»: Worksheets(«Бланк»).Copy, Worksheets(«Обзор2014»)

Основным рабочим инструментов в листе является объект Range – диапазоны ячеек. Задать диапазон можно разными способами. Например, чтобы работать с ячейкой А3, нужно написать код: ActiveSheet.Range(«A3»). Если ячейка А3 активна, то есть выбрана, то тот же самый Range-объект вернет выражение: ActiveCell. Свойство Offset позволяет задавать относительное смещение. Чтобы выделить ячейку на 3 столбца правее текущего, напишите:

ActiveCell.Offset(0, 3).Select

Прямоугольный диапазон задается как и в формулах рабочего листа:

ActiveSheet.Range(«A3:B5»)

Если на листе определены именованные диапазоны и нужно выделить некоторую ячейку в M-той строке и N-том столбце, то можно написать

ActiveSheet.Range(«ИмяДиапазона»).Cell(N, M). Например, код ActiveSheet. Range(«A3:B5»).Cells(2, 2) вернет ячейку B4. Очень часто требуется указывать диапазоны в циклических конструкциях типа For. Чтобы можно было при задании диапазона пользоваться номерами строк и столбцов, Range-объект можно определить указанием угловых ячеек диапазона через семейство Cells

рабочего листа. Выражение ActiveSheet.Range(Cells(1, 2), Cells(3, 4)) задает диапазон ячеек «B1:E3». Код ActiveSheet.Range(«A3»)=15 записывает число 15

в ячейку A3. Код Range(«A11»).FormulaLocal = «=СУММ(A1:A10)» позволяет поместить в ячейку формулу.

Объект может иметь множество свойств. С помощью With можно задавать значения сразу нескольким свойствам объекта:

With Объект

.Свойство1=ЗначениеСвойства1

.Свойство2=ЗначениеСвойства2

End With

Строки между With и End With сдвинуты влево. Для VBA это неважно, но это упрощает чтение программы.

Форматирование шрифта в A3:D9 жирным с тенью Arial 16 кеглем: With Range(«A3:D9»).Font

.Bold = True

.Shadow = True

.Name = «Arial»

.Size = 16 End With

Свойство Locked разрешает (False) или запрещает (True) модификацию:

29

Range(«A3:C9»).Locked = False.

Очистка диапазона Range(«A5:A10»).Clear. Форматировать символы в ячейке: Characters. Форматирует жирным третий и четвертый символы в A3:

Range(«A3»).Characters(3, 2).Font.Bold = True

3) Кнопки.

Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей макрос. Кнопка может быть двух типов: а) кнопка на панели инструментов; б) кнопка на листе\форме.

а) Нажмите на ленту Файл, а затем Параметры. Выберите вкладку

Настройка ленты. Выберите из пункта Выбрать команды: «Макросы». Далее выбираем из списка показанных макросов нужный макрос, нажимаем на него и жмем кнопку Добавить. Нажав на кнопку Изменить, можно поменять внешний вид кнопки на другой и задать другое имя для отображения. Итак, вид кнопки, название выбрано, жмем ОК. В результате на панели быстрого доступа появляется кнопка, отвечающая за выполнение макроса (рисунок 25).

Рисунок 25 – Добавление макроса в виде значка на панель инструментов

б) На вкладке Разработчик в группе Элементы управления (при этом должен быть Режим Конструктора включен) выбирайте Инструменты из предыдущих версий, кнопка и разместите ее в любом месте документа. Изменить тип кнопки, размер, цвет и оформление можно, нажав на кнопку правой клавишей мыши и выбрав Свойства. После того как кнопка готова, по ней левой клавишей мыши нужно кликнуть 2 раза - откроется редактор Visual Basic. На форме кнопку можно разместить, находясь в редакторе Visual Basic и нажав Insert UserForm. Рядом с появившейся формой открывается набор инструментов, где также можно найти Кнопку.

4) Сообщения.

Существует 2 типа диалоговых окон: окно вывода данных (рисунок 26а) и окно ввода данных (рисунок 26б). Код на кнопке:

Private Sub CommandButton1_Click()

MsgBox («Это пример выполнения макроса») End Sub

Private Sub CommandButton2_Click()

Soobshenie = InputBox(«Строка пояснения», «Это титульная подпись», «Подпись по умолчанию»)

End Sub

а)

б)

 

Рисунок 26 – Пример работы окон ввода и вывода данных

 

30