Визуальное программирование и его основные возможности
Специфика визуального подхода к программированию, языки и среды программирования, которые поддерживают его возможности. Классификация языков визуального программирования. Объектная модель (иерархия классов VBA), используемая в MS Word и в MS Excel.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 27.04.2013 |
Размер файла | 965,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- 1. Теоретическая часть
- 2. Практическая часть
- Список использованной литературы
- Приложения
1. Теоретическая часть
1. а. В чем состоит специфика визуального подхода к программированию, какие языки, среды программирования или среды проектирования поддерживают возможности визуального программирования?
Главное преимущество визуальных языков программирования - то, что они позволяют наглядно представить программные структуры как например, алгоритмы и данные. Это противоречит традиционным текстовым языкам программирования, где такие многомерные структуры закодированы в одномерные строки с помощью достаточно сложного синтаксиса. Визуальные языки убирают этот слой абстракции, позволяя программисту, непосредственно наблюдать и манипулировать сложными программными структурами. Такая прямота представления, характеризуется большей наглядностью.
Языки визуального программирования могут быть дополнительно классифицированы в зависимости от типа и степени визуального выражения, на следующие типы:
· языки на основе объектов, когда визуальная среда программирования предоставляет графические или символьные элементы, которыми можно манипулировать интерактивным образом в соответствии с некоторыми правилами;
· языки, в интегрированной среде разработки которых на этапе проектирования интерфейса применяются формы, с возможностью настройкой их свойств. Примеры: Delphi и C++ Builder фирмы Borland;
· языки схем, основанные на идее "фигур и линий", где фигуры (прямоугольники, овалы и т.п.) рассматриваются как субъекты и соединяются линиями (стрелками, дугами и др.), которые представляют собой отношения. Пример: UML.
визуальное программирование язык
Визуально-преобразованные языки являются невизуальными языками с наложенным визуальным представлением (например, среда Visual C++ для языка C++). Естественно-визуальные языки имеют неотъемлемое визуальное выражение, для которого нет очевидного текстового эквивалента (например, графический язык G в среде LabVIEW).
Структурной единицей визуального программирования в Delphi и C++Buider является компонент. Компонента представляет собой разновидность объекта, который можно перенести (агрегировать) в приложение из специальной Палитры компонент. Компонента имеет набор свойств, которые можно изменять, не изменяя исходный код программы.
Компоненты бывают визуальными и не визуальными. Первые предназначены для организации интерфейса с пользователем. Это различные кнопки, списки, статический и редактируемый текст, изображения и многое другое. Эти компоненты отображаются при выполнении разрабатываемого приложения. Не визуальные компоненты отвечают за доступ ксистемным ресурсам: драйверам баз данных, таймерам и т.д. Во время разработки они отображаются своей пиктограммой, но при выполнении приложения, как правило, невидимы. Компонента может принадлежать либо другой компоненте, либо форме.
Формой называется визуальная компонента, обладающая свойством окна Windows. При разработке на форме помещаются необходимые компоненты (например, элементы требуемого диалога). Форм в приложении может быть несколько - по требуемому числу открываемых при выполнении диалога окон, их можно добавлять и удалять.
Программные средства разработки приложений, относящиеся к предыдущему поколению, предлагают интерактивные средства решения типовых задач (мастера в Borland С++ и Wizards или волшебники в Visual С++), которые позволяют в диалоге с программистом создавать и вставлять в программы готовые фрагменты исходного кода.
1. б. Какова объектная модель (иерархия классов VBA), используемая в MS WORD и в MS Excel?
Для того чтобы использовать из сценариев WSH те возможности, которые поддерживают программы Word и Excel, необходимо знать, какие именно объекты предоставляются для внешнего использования этими серверами автоматизации и как объекты соотносятся друг с другом. Хотя объектные модели различных приложений Microsoft Office довольно сложны (например, Word содержит порядка 200 взаимосвязанных друг с другом объектов), они очень похожи друг на друга, причем для практических целей достаточно понять принцип работы с несколькими ключевыми объектами.
Структура объектной модели Word показана на рисунке 1, ее можно вызвать, воспользовавшись встроенной в Word справкой по Visual Basic.
Рисунок 1 - Объектная модель Microsoft Word
На самом верхнем уровне объектной модели Word находится объект Application, который представляет непосредственно само приложение Word и содержит (в качестве свойств) все остальные объекты. Таким образом, объект Application используется для получения доступа к любому другому объекту Word.
Семейство Documents является свойством объекта Application и содержит набор объектов Document, каждый из которых соответствует открытому в Word документу. Класс Documents понадобится нам в сценариях для создания новых документов. Объект Document содержит в качестве своих свойств семейства различных объектов документа; символов (Characters), слов (Words), предложений (Sentences), параграфов (Paragraphs) и т.д. В одном из рассмотренных ниже сценариев, например, нам понадобится работать с семейством закладок в документе (Bookmarks).
Объект Selection позволяет работать с выделенным фрагментом текста (этот фрагмент может быть и пустым). Таким образом, можно сказать, что объект Selection открывает путь в документ, т.к. он предоставляет доступ к выделенному фрагменту документа. В частности, у объекта Selection имеется метод TypeText (Text), с помощью которого можно вставлять текст в документ. Используя свойства этого объекта (которые, в свою очередь, могут являться объектами со своими свойствами), можно управлять параметрами выделенного фрагмента, например, устанавливать нужный размер и гарнитуру шрифта, выравнивать параграфы по центру и т.п.
Объектная модель Excel построена по тому же принципу, что и объектная модель Word. Основным объектом, содержащим все остальные, является Application. Структура объектной модели Word показана на рисунке 2.
Рисунок 2 - Объектная модель Microsoft Excel
Напомним, что отдельные файлы в Excel называются рабочими книгами. Семейство
Workbooksв Excel является аналогом семейства Documents в Word и содержит набор объектов Workbook (аналог объекта Document в Word), каждый из которых соответствует открытой в Word рабочей книге. Новая рабочая книга создается с помощью метода Add () объекта Workbooks.
Для доступа к ячейкам активного рабочего листа Excel используется свойство Cells объекта Application. Для получения или изменения значения отдельной ячейки применяется конструкция Cells (row, column). Value, где row и column являются соответственно номерами строки и столбца, на пересечении которых находится данная ячейка.
В Excel, как и в Word, имеется объект Selection, позволяющий работать с выделенным фрагментом электронной таблицы. Самым простым способом выделить диапазон ячеек активного рабочего листа является использование метода Select () объекта Range. Например, выражение Range ("A1: C1"). Select () позволяет выделить три смежные ячейки: "A1", "B1" и "C1".
Для того чтобы понять, какой именно объект Word или Excel нужно использовать для решения той или иной задачи, часто проще всего бывает проделать в соответствующем приложении необходимые манипуляции вручную, включив предварительно режим записи макроса. В результате получим текст макроса на языке VBA (Visual Basic for Applications), из которого будет ясно, какие методы и с какими параметрами нужно вызывать и какие значения нужно присваивать свойствам объектов.
1. в. Как обрабатываются и программно перехватываются различные ошибки исполнения программы на языке VBA для приложений MS Office? (перечислить команды, приемы VBA для обработки ошибок - например, команда "on error goto." - и ей подобное)
Ошибки возникают на различных стадиях проектирования приложения:
- в процессе написания текста процедуры (синтаксические и семантические ошибки). Например, неправильные имена ключевых слов VBA, некорректные имена переменных, использование необъявленных объектов и их свойств и т.п.
- в процессе запуска программ: в результате использования необъявленных массивов, имен неописанных функций, обращении к несуществующим файлам, случаи деления на ноль, доступа к несуществующим папкам или файлам и т.п.
Обычно ошибки делят на следующие группы: системные, синтаксические и логические. Для обнаружения ошибок каждой группы в макросах существуют различные приемы.
Во-первых при написании текста программ интерпретатор помогает исключить большинство синтаксических ошибок, выделяя строки с синтаксически неправильный тестом красным цветом. Строка, выделенная красным цветом, должна быть проанализирована и исправлена. Например: Ошибочное выражение:
Sheets ("Лист”). Cells (1,2), value
Будет выделено красным цветом до тех пор, пока мы неисправим запятую на очку между знаком) и символом v. Потому, что разделителем свойства объекта в Visual Basic является символ точка, а не запятая.
Во-вторых. При вводе имени объектов, определенных на форме их свойства не обязательно вводить с клавиатуры, а предпочтительнее выбирать необходимое свойство из предлагаемого (выпадающего) списка. Это сокращает время написания программ и помогает избежать ошибок при написании свойств.
В третьих. При разработке алгоритма макроса (или процедуры), не следует часто использовать оператор GOTO <метка строки>. Это приводит к запутанным логическим схемам, которые затем сложно проконтролировать.
В процессе отладки написанного макроса в распоряжении разработчика есть следующие инструменты.
Вызов принудительных остановов (создание "точек прерывания") с помощью клавиши F9. Строка, на которой установлена "точка прерывания" выделяется коричневым цветом. Снятие принудительного останова осуществляется повторным нажатием на этой строке клавиши F9.
Принудительный останов в процедуре можно вызвать используя команду STOP.
В момент останова пользователь может подвести курсор к имени определенной переменной и посмотреть ее значение. Кроме того, в окне непосредственных операций пользователь может произвести контрольные операции над переменными или вывести их значения. Продолжить работу программу можно, нажав F5 или F8.
Вывести значения переменных в окно непосредственных действий можно используя команду DEBUG. PRINT <список переменных>. В этом случае результаты будут выводиться в это окно без остановки выполнения программы.
Дополнительно удобно выводить промежуточные значения переменных в момент выполнения процедур, используя для этого команду MSGBOX <текстовая переменная>. Текстовая переменная обычно формируется, включая комментарии поясняющие значения переменных. Например, нам необходимо вывести номер строки таблицы (переменная NstrTab) и номер столбца (переменная NcolTab), над которыми идет обработка. В этом случае можно воспользоваться следующей программой:
tt = ”Строка=” & NstrTab & Chr (10)
tt = ”Столбец=" & NcolTab
MsgBox tt
Мощным средством отладки в режиме интерпретатора является режим пошагового прохода по строкам процедуры. Этот режим задается нажатием клавиши F8.
Нажимая каждый раз F8 разработчик проходит одну команду (или строку) процедуры и останавливается на следующей. Здесь он может проконтролировать значения нужных переменных, внести необходимые коррективы в алгоритм или выполнить контрольные вычисления в окне непосредственных операций и затем перейти к следующей строке процедуры.
Используя комбинацию клавиши F8 с другими клавишами (например, Shift), можно пропускать (т.е. выполнять без остановки) некоторые блоки строк в процедуре. Высокоэффективный путь отладки программы состоит в том, чтобы пользователь написал такой собственный драйвер ошибок, который может перехватывать любые системные ошибки. Возникающие во время исполнения программы.
Драйвер ошибок - это такая программа, которая включается в текст основной программы и реагирует на возникновение ошибки, перехватывает управление и выдает соответствующее сообщение.
Перехват системных ошибок производится инструкцией
ON ERROR GOTO < метка строки>
Метка строки - это комбинация алфавитноцифровых символов без пробелов, заканчивающаяся знаком "двоеточие", которая устанавливается в начале строки, на которую следует переходить в случае возникновения ошибки. А сообщения об ошибке можно получить с помощью свойств объекта Err.
Number |
Возвращает код ошибки |
|
Source |
Имя текущего проекта |
|
Description |
Возвращает строковое выражение, содержащее текст сообщения |
|
HelpFile |
Полное имя файла справки |
|
HelpContext |
Контекстный идентификатор файла справки. |
|
LastDLLError |
Содержит системный код ошибки для последнего вызова библиотеки динамической компоновки (DLL) |
Пример организации перехвата и обработки ошибок в процедурах
Sub ТЕСТ1 ()
`- - Включение перехвата ошибок - --
On Error Goto МЕТКА1
<блок операторов процедуры>
`- - оператор досрочного выхода из процедуры -
`- - Драйвер обработки ошибок - ---------
МЕТКА1:
tt ="Ошибка =" & Err. Description & chr (10)
tt = "Продолжить расчет (Да/Нет) =”
Rep=Msgbox (tt, 308,”Системная ошибка”)
If Rep=vbNo then Exit sub
Resume Next
Exit sub
End Sub
1. г. Классы-коллекции VBA для работы с выделенными областями и диапазонами - range и selection - привести синтаксис различных их конструкций и примеры их использования - с расшифровкой назначения той или иной конструкции, команды, примера
Объект RANGE представляет отдельную ячейку, диапазон ячеек, целую строку, или колонку, несколько выделенных областей или трехмерный диапазон. Объект RANGE несколько необычен, поскольку может представлять как одну, так и множество ячеек. Для объекта RANGE не предусмотрен специальный объект-набор, и в зависимости от конкретной ситуации его можно считать либо отдельным объектом, либо набором.
Пожалуй, самый естественный способ получения ссылки на объект Range - это метод Range. Имеются два вида синтаксиса для применения этого метода. Первый использует один аргумент: объект. Range (интервал), где: объект - это объект типа Worksheet или Range, к которому применяется метод Range. Этот объект может быть опущен, и тогда предполагается, что метод Range применяется к активному рабочему листу - объекту ActiveSheet; Range ("A1: B10"). ClearContents
Строка, описывающая диапазон, может содержать символы $, задающие абсолютный стиль ссылок, но эти символы игнорируются и никак не влияют на определение диапазона. Если метод применяется к объекту типа Worksheet, то получается абсолютная ссылка на указанный диапазон разделитель списка - запятая ","). Например, следующий оператор ссылается на диапазон A1: B10 активного рабочего листа и очищает его рабочего листа; если же метод применяется к объекту типа Range, то ссылка считается относительной. Например, если текущая активная ячейка - это ячейка B3, то оператор Selection. Range ("B1")
возвращает ячейку C3, поскольку ссылка B1 считается относительной для объекта Range (активной ячейки B3), возвращаемого свойством Selection. В то же время оператор ActiveSheet. Range ("B1") всегда возвращает ячейку B1.
Если вы используете имена для диапазонов ячеек рабочего листа, то они также могут использоваться в качестве ссылки на диапазон, например, оператор Range ("Условия"). Copy - копирует поименованный диапазон "Условия" в буфер обмена.
Другой синтаксис для метода Range использует два аргумента: объект. Range (ячейка1, ячейка2)
Эти два аргумента представляют собой ссылки на ячейки, определяющие верхний левый и правый нижний углы прямоугольного диапазона ячеек. Такой синтаксис может быть особенно удобен при определении изменяющегося диапазона ячеек, поскольку позволяет независимо формировать координаты верхнего левого и правого нижнего угла.
Объекты Selection также обладают свойством Range. Это значительно упрощает использование свойств и методов, принадлежащих объектам Range существующих выделенных областей. Приведенный ниже пример присваивает диапазон выделенной области переменной, перемещает выделенную область, после чего преобразует текст прописными буквами:
Set deRange = Selection. Range
Selection. Move Unit: = wdParagraph, Count: = 3
deRange-Case = wdLowerCase
Объект Selection представляет выделенную область. Поскольку в каждом окне может быть только одна выделенная область, то одновременно может существовать лишь несколько объектов Selection по одному на каждое существующее окно или подокно. Заметим также, что, объект Selection всегда существует в окне, даже если и не сделано явного выделения некоторой области, в последнем случае объект Selection задает точку вставки, определенную позицией курсора.
Объект Range имеет метод Select, выделяющий область объекта Range, и определяющий, тем самым, новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объектRange, соответствующий выделенной области.
Объекты Range и Selection столь же многообразны по своей структуре, как и объект Document. И даже большинство свойств у этих трех объектов одни и те же. Эти три объекта являются схожими. Это понятно, так как большинство частей документа: предложения, абзацы, разделы, таблицы, рисунки, комментарии, ссылки и многое другое - может составлять любую подобласть документа, в том числе и выделенную подобласть. Значит, большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection. Это приятно - ведь с большинством свойств этих объектов мы уже знакомы!
Объект Range напоминает матрешку: в каждую область вложена область поменьше.
Объекты Range и Selection позволяют выполнять основные операции над текстом: "выделить", "добавить", "заменить", "удалить". У наших объектов большой набор методов, позволяющих реализовать эти операции.
1. д. Создание и применение пользовательских функций в EXCEL (не встроенных, а программируемых)
Даже когда кажется, что встроенные инструменты анализа данных Excel способны выполнить все необходимые действия, работа с VBA может оказаться более удобной. Использование VBA позволяет создавать пользовательские функции для рабочих листов, существенно превосходящие формулы, которые могут записываться непосредственно в ячейке.
Пользовательские функции позволяют проводить вычисления и другие операции, выполнение которых с помощью формул, основанных на встроенных функциях, просто невозможно. Даже когда написанная формула дает такой же результат, пользовательская функция имеет существенные преимущества, например в большей простоте написания, тестирования, понимания и т.д. Вместо тесной панели формул в распоряжение предоставляется целое окно редактирования кода, где сложную логическую конструкцию можно разбить на понятные линии. Еще одно важное преимущество состоит в возможности вставки комментариев (и это следует максимально использовать) непосредственно рядом с кодом, к которому они относятся. Написание пользовательских функций рабочего листа.
Пользовательские функции Excel - это просто обычные процедуры VBA-функций. Если сказать коротко, процедура функции начинается с декларации ее имени и заканчивается оператором End Function. Иногда внутри может потребоваться оператор, присваивающий значение имени функции, данное значение как раз и возвращает функция. В простейшем примере, приведенном здесь, именно это и демонстрируется:
FunctiDn MemoryAvailable ()
M-smoryAvailable = Application. MemoryFree
End Fu. icticn
Данная функция просто возвращает количество памяти в байтах, доступных в текущее время для Excel. Заметьте, что, поскольку функция получает данные о количестве доступной памяти из системы, она не имеет аргументов. Ниже приведен пример немного более сложной функции, принимающей аргументы:
Function CheckForvalue (aRange,Value)
For Each objCell In aRange
CheckForValue = False 'по умолчанию возвращается значение
False
If objCell. Value = Value Then
CheckForValue = True
Exit For
End If
Next objCell
EndFur. Ction
Данная функция проверяет диапазон ячеек на наличие определенного значения. Если значение есть где-либо в диапазоне, функция возвращает значение True, в противном случае возвращается значение F a l s e. Перед инициированием функции необходимо обеспечить ее двумя аргументами - диапазоном и искомым значением.
Профессиональное написание функций
Не стоит отказываться от возможности написания функции таким образом, чтобы выдаваемый се результат был именно таким, как вам того хотелось бы. Зачем поручать формуле выполнять то, что можно сделать в самой функции? Приведенная модификация функции CheckForValue вместо непонятных значений True и F a l s e возвращает строку поясняющего текста:
Function CheckForVaiue2 (aRange, Value)
For Each objCell In aRange
CheckForValue2 = "искомое значение" 6 Value & __ "не найдено"
I;: objCell. Value = value Then
CheckForValue2 = "искомое значение" & Value & _ "находится
в ячейке" & objCell. Address
Exit For
End If
Next objCell
End Function
Если модифицированной функции удается найти искомое значение где-либо внутри диапазона, она возвращает строчку вроде Искомое значение 3, 57 находится Б ячейке SFS83; в противном случае возвращается строчка Искомое значение 3,57 не найдено.
2. Практическая часть
А) Создать программу-макрос на языке VBA для [MS WORD], которая с помощью управляющих кнопок на форме производит такие событийные процедуры:
2. а.1. Открывает для работы документ (имя документа не должно задаваться "жестко", т.е. программно - имя документа должен иметь возможность выбрать пользователь вашей программы): - используйте dialogs.
Для демонстрации работы программы откроем файл "Задание 1. doc", который содержит пользовательскую форму и модуль с макросами.
В Word 2003 для вызова пользовательской формы выберем в меню Сервис > Макрос > Макросы (в Word 2007-2010 вкладка Вид > Макросы> Макросы) и в открывшемся окне выберем макрос Open_UserForm1. Нажмем кнопку Выполнить (рисунок 3). (Для просмотра кода программы можно нажать Alt+F11 - откроется редактор VBA.)
Рисунок 3 - Запуск макроса
На экране появится форма с шестью управляющими кнопками (рисунок 4).
Рисунок 4 - Пользовательская форма
При нажатии на кнопку "Открыть файл" откроется диалоговое окно "Открытие документа". Открывается выбранный документ.
Код процедуры:
Private Sub cmdOpenFile_Click ()
Call openFile
End Sub
Sub openFile ()
'закрываем пользовательскую форму
Unload UserForm1
'открытие файла с помощью диалогового окна
With Dialogs (wdDialogFileOpen)
Name = "*. doc*"
Show
End With
'снова открываем форму
UserForm1. Show
End Sub
2. а.2. В документе программно производится выделение какого-либо куска текста и копирование его в буфер.
При нажатии на кнопку "Копировать в буфер" будет помещен в буфер 1 абзац активного документа.
Код процедуры:
Private Sub cmdCopyClipboard_Click ()
Call TextCopyClipboard
End Sub
Sub TextCopyClipboard ()
'копируем 1 абзац
ActiveDocument. Paragraphs (1). Range. Copy
End Sub
2. а.3. По нажатию управляющей кнопки создается новый файл и в него вставляется кусок из буфера.
При нажатии на кнопку "Новый файл" создастся новый документ, в который будет помещено содержимое буфера.
Код процедуры:
Private Sub cmdNewDocument_Click ()
Call newDoc
End Sub
Sub newDoc ()
'закрываем пользовательскую форму
Unload UserForm1
'создаем новый документ и вставляем в него данные из буфера
Documents. Add
ActiveDocument. Range. Paste
'снова открываем форму
UserForm1. Show
End Sub
2. а.4. По "щелчку" еще одной управляющей кнопки на форме производится нумерация страниц текущего документа, добавление текущей даты в конце и сохранение на диске под именем "МояКопии. dос"
При нажатии на кнопку "Пронумеровать страницы" производится нумерация страниц текущего документа, добавление текущей даты в конце и сохранение на диске под именем "МояКопия. dос".
Код процедуры:
Private Sub cmdNumerPage_Click ()
'нумеруем страницы
ActiveDocument. Sections (1). Footers (1). PageNumbers. Add PageNumberAlignment: = _
wdAlignPageNumberRight, FirstPage: =True
'переходим в конец документа
Selection. EndKey wdStory
'вставляем новый абзац
Selection. TypeParagraph
'добавляем текущую дату
Selection. Text = Date
'сохраняем активный документ под именем "МояКопия. doc"
ActiveDocument. SaveAs FileName: ="МояКопия. doc"
End Sub
2. а.5. Еще одна кнопка на форме должна выводить активный (текущий) документ для предварительного просмотра на экран.
При нажатии на кнопку "Просмотр" будет осуществлен вывод активного (текущиго) документа для предварительного просмотра на экран.
Код процедуры:
Private Sub cmdView_Click ()
'выводим активный документ для предварительного просмотра на экран
ActiveDocument. PrintPreview
End Sub
2. а.6. По кнопке "выход" все открытые документы сохраняются и работа макроса (программы) завершается.
При нажатии на кнопку "Выход" все открытые документы сохраняются и работа макроса (программы) завершается.
Код процедуры:
Private Sub cmdExit_Click ()
Application. Quit SaveChanges: =wdSaveChanges
End Sub
Б) Создать программу (макрос) для [MS EXCEL]: макрос должен с помощью формы позволять производить следующие манипуляции с электронными книгами:
2. б.1. Открытие существующей электронной книги с одновременной выдачей списка ее листов на форму (в объект типа ListBox или ComboBox) и возможностью перехода с одного листа электронной книги - на другой лист - с помощью выбора элементов этого списка (программируете событие onCange для списка). При открытии книги "Задание 2. xls" на экране появляется пользовательская форма (рисунок 6).
Рисунок 6 - Пользовательская форма
При нажатии на кнопку "Открыть книгу" появляется диалоговое окно "Открытие документа". Открывается выбранный документ, при этом в поле со списком появляются названия всех листов активной книги.
Код процедуры:
Private Sub cmdOpenFile_Click ()
'открытие файла с помощью диалогового окна
FName = Application. GetOpenFilename ("Excel Files (*. xlsm; *. xls), *xlsm; *. xls")
If FName = False Then End ' если была нажата кнопка Отмена - выходим из процедуры
открываем выбранную книгу
Workbooks. Open FName,,, 1
'очищаем поле со списком
ComboBox1. Clear
'добавляем в поле со списком ComboBox1 наименования всех листов открытой книги
For i = 1 To ActiveWorkbook. Worksheets. Count
ComboBox1. AddItem Worksheets (i). Name
Next i
End Sub
При выборе в ComboBox какого-то элемента, лист с выбранным названием становится активным.
Код процедуры:
Private Sub ComboBox1_Change ()
'если в поле со списком был выбран какой то лист - открываем его
If ComboBox1. ListIndex >= 0 Then
Worksheets (ComboBox1. Value). Activate
End If
End Sub
2. б.2. Создание новой электронной книги. Предусмотреть также на форме кнопку для сохранения всех открытых файлов или активного документа в любой момент.
При нажатии на кнопку "Создать новый документ" появляется новая книга.
Код процедуры:
Private Sub cmdNewDoc_Click ()
Workbooks. Add
End Sub
2. б.3. Заполнение 3-го листа активной электронной книги данными, вводимыми с формы пользователем вашей программы.
Для заполнение 3-го листа активной электронной книги данными, необходимо на форме заполнить поля "Фамилия" и "Дата рождения" и нажать кнопку "Добавить".
При каждом нажатии на эту кнопку на 3 лист активной книги будут последовательно добавляться введенные пользователем данные.
Код процедуры:
Private Sub cmdAdd_Click ()
'открываем 3 лист активной книги
ActiveWorkbook. Worksheets (3). Activate
'определяем последнюю заполненную строку в текущем диапазоне
last_row = Cells (1, 1). CurrentRegion. Rows. Count
Cells (1, 1) = "ФИО"
Cells (1,2) = "Дата"
'записываем в первую пустую строку данные из текстовых полей, предварительно проверив правильность ввода
If last_row >= 1 Then
If TextBox1. Text = "" Or IsDate (TextBox2) = False Then MsgBox "Неверные данные, повторите ввод": Exit Sub
Cells (last_row + 1, 1) = TextBox1. Text
Cells (last_row + 1,2) = Format (TextBox2. Text, "dd. mm. yyyy")
End If
'выравниваем ширину столбцов по содержимому
Columns ("A: B"). AutoFit
End Sub
2. б.4. На 2-м листе электронной таблицы предусмотреть вставку и выполнение функции, которая не является стандартной функцией Excel, а описана вами в пользовательской процедуре function.
При нажатии на кнопку "Пользовательская функция" пользователю будет предложено ввести предложение. Введенное предложение будет помещено в 1 ячейку 2-го листа электронной таблицы. Рядом же будет помещен результат пользовательской функции, с помощью которой заданное предложение будет разбито на отдельные слова.
К примеру, дана таблица, один из столбцов которой содержит ФИО. А необходимо получить 3 столбца (1 столбец - фамилии, 2 и 3 соответственно - имена и отчества). С помощью стандартных процедур это сделать довольно сложно.
Поэтому было принято решение создать функцию, которая легко справлялась бы с этой задачей.
Входными аргументами функции будет "предложение" и "номер слова", которое необходимо получить из этого предложения.
Напишем еще одну функцию, которая будет возвращать количество слов в заданном предложении.
Код процедуры:
Private Sub cmdFunction_Click ()
Worksheets (2). Activate
fio = InputBox ("Введите предложение", "Ввод данных", "Самохин Федор Петрович")
Worksheets (2). Cells (1, 1) = fio
'вызов пользовательской функции, которая в качестве результата возвращает количество слов в введенном предложении
n = Количество_слов_в_предложении (fio)
For i = 1 To n
'вызов пользовательской функции, которая в качестве результата возвращает слово из предложения, которое стоит в определенном месте
Worksheets (2). Cells (1, 1 + i) = Слово_из_предложения (fio, i)
Next i
End Sub
Function Слово_из_предложения (Предложение, Номер_слова)
sss = Split (Предложение)
Слово_из_предложения = sss (Номер_слова - 1)
End Function
Function Количество_слов_в_предложении (Предложение) As Integer
If Предложение <> "" Then
sss = Split (Предложение)
Количество_слов_в_предложении = UBound (sss) + 1
End If
End Function
При вводе "Самохин Федор Петрович" (рисунок 7) результат работы функции показан на рисунке 8. То есть функция запускалась 3 раза, в 1 раз она вернула 1 слово из введенного предложения, второй раз - второе слово, третий раз - третье. Таким образом мы разбили введенное предложение по словам.
Рисунок 7 - Окно ввода
Рисунок 8 - Результат работы функции
2. б.5. Предусмотреть на форме кнопку, которая выводит на экран (на форму) электронную таблицу для предварительного просмотра перед печатью.
При нажатии на кнопку "Просмотр" произойдет вывод на экран электронной таблицы для предварительного просмотра перед печатью (рисунок 9).
Рисунок 9 - Предварительный просмотр
Код процедуры:
Private Sub cmdView_Click ()
Me. Hide
ActiveWindow. SelectedSheets. PrintPreview
UserForm1. Show
End Sub
2. б.6. Предусмотреть на форме кнопку, позволяющую настроить параметры страницы перед распечаткой (используйте для этого диалоги (класс Dialogs) MS Excel).
При нажатии на кнопку "Настройка параметров" появится окно "Параметры страницы".
Код процедуры:
Private Sub cmdParametrs_Click ()
Application. Dialogs (xlDialogPageSetup). Show
End Sub
При этом предусмотрено сохранение всех открытых файлов в любой момент. Для этого нужно нажать на кнопку "Сохранить все" в правом верхнем углу формы.
Код процедуры:
Private Sub cmdSaveAll_Click ()
'сохраняем все открытые книги
For Each w In Application. Workbooks
w. Save
Next w
End Sub
2. б.7. Предусмотреть на форме кнопку "Выход" с сохранением всех сделанных изменениях в книгах. xls
При нажатии на кнопку "Выход" программа будет закрыта, все сделанные изменений будут сохранены.
Код процедуры:
Private Sub cmdExit_Click ()
For Each w In Application. Workbooks
w. Save
Next w
Application. Quit
End Sub
Список использованной литературы
1. А. Васильев, А. Андреев. VBA в Office 2000. Учебный курс - С-Пб.: "Питер", 2001
2. В.И. Король. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. - М.: Издательство КУДИЦ, 2000
3. В.А. Биллиг. "VBA в Office 2000. Офисное программирование" - М.: Издательско-торговый дом "Русская Редакция", 1999
4. Руководство программиста по Visual Basic для Microsoft Office 97 /Пер. с англ. - М.: Издательский отдел "Русская Редакция" TOO "Channel Trading Ltd.", 1997
5. В.А. Биллиг, М.И. Дехтярь. VBA и Office 97. Офисное программирование - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd." 1998
6. Кен Гетц, Майк Гилберт. Программирование на Visual Basic 6 и VBA. Руководство разработчика: Пер. с англ. - К.: Издательская группа BHV, 2001
Приложения
Для демонстрации работы программы откроем файл "Задание 1. doc", который содержит пользовательскую форму и модуль с макросами.
В Word 2003 для вызова пользовательской формы выберем в меню Сервис > Макрос > Макросы (в Word 2007-2010 вкладка Вид > Макросы> Макросы) и в открывшемся окне выберем макрос Open_UserForm1. Нажмем кнопку Выполнить. (Для просмотра кода программы можно нажать Alt+F11 - откроется редактор VBA.)
При нажатии на 1 кнопку ("Открыть файл") откроется диалоговое окно "Открытие документа". Открывается выбранный документ.
Код процедуры:
Private Sub cmdOpenFile_Click ()
Call openFile
End Sub
Sub openFile ()
'закрываем пользовательскую форму
Unload UserForm1
'открытие файла с помощью диалогового окна
With Dialogs (wdDialogFileOpen)
Name = "*. doc*"
Show
End With
'снова открываем форму
UserForm1. Show
End Sub
При нажатии на 2 кнопку ("Копировать в буфер") будет помещен в буфер 1 абзац активного документа.
Код процедуры:
Private Sub cmdCopyClipboard_Click ()
Call TextCopyClipboard
End Sub
Sub TextCopyClipboard ()
'копируем 1 абзац
ActiveDocument. Paragraphs (1). Range. Copy
End Sub
При нажатии на 3 кнопку ("Новый файл") создастся новый документ, в который будет помещено содержимое буфера.
Код процедуры:
Private Sub cmdNewDocument_Click ()
Call newDoc
End Sub
Sub newDoc ()
'закрываем пользовательскую форму
Unload UserForm1
'создаем новый документ и вставляем в него данные из буфера
Documents. Add
ActiveDocument. Range. Paste
'снова открываем форму
UserForm1. Show
End Sub
При нажатии на 4 кнопку ("Пронумеровать страницы") производится нумерация страниц текущего документа, добавление текущей даты в конце и сохранение на диске под именем "МояКопия. dос".
Код процедуры:
Private Sub cmdNumerPage_Click ()
'нумеруем страницы
ActiveDocument. Sections (1). Footers (1). PageNumbers. Add PageNumberAlignment: = _
wdAlignPageNumberRight, FirstPage: =True
'переходим в конец документа
Selection. EndKey wdStory
'вставляем новый абзац
Selection. TypeParagraph
'добавляем текущую дату
Selection. Text = Date
'сохраняем активный документ под именем "МояКопия. doc"
ActiveDocument. SaveAs FileName: ="МояКопия. doc"
End Sub
При нажатии на 5 кнопку ("Просмотр") будет осуществлен вывод активного (текущиго) документа для предварительного просмотра на экран.
Код процедуры:
Private Sub cmdView_Click ()
'выводим активный документ для предварительного просмотра на экран
ActiveDocument. PrintPreview
End Sub
При нажатии на 6 кнопку ("Выход") все открытые документы сохраняются и работа макроса (программы) завершается.
Код процедуры:
Private Sub cmdExit_Click ()
Application. Quit SaveChanges: =wdSaveChanges
End Sub
При открытии книги "Задание 2. xls" на экране появляется пользовательская форма.
При нажатии на кнопку "Открыть книгу" появляется диалоговое окно "Открытие документа". Открывается выбранный документ, при этом в поле со списком появляются названия всех листов активной книги.
Код процедуры:
Private Sub cmdOpenFile_Click ()
'открытие файла с помощью диалогового окна
FName = Application. GetOpenFilename ("Excel Files (*. xlsm; *. xls), *xlsm; *. xls")
If FName = False Then End ' если была нажата кнопка Отмена - выходим из процедуры
' открываем выбранную книгу
Workbooks. Open FName,,, 1
'очищаем поле со списком
ComboBox1. Clear
'добавляем в поле со списком ComboBox1 наименования всех листов открытой книги
For i = 1 To ActiveWorkbook. Worksheets. Count
ComboBox1. AddItem Worksheets (i). Name
Next i
End Sub
При выборе в ComboBox какого-то элемента, лист с выбранным названием становится активным.
Код процедуры:
Private Sub ComboBox1_Change ()
'если в поле со списком был выбран какой то лист - открываем его
If ComboBox1. ListIndex >= 0 Then
Worksheets (ComboBox1. Value). Activate
End If
End Sub
При нажатии на кнопку "Создать новый документ" появляется новая книга.
Код процедуры:
Private Sub cmdNewDoc_Click ()
Workbooks. Add
End Sub
Для заполнение 3-го листа активной электронной книги данными, необходимо на форме заполнить поля "Фамилия" и "Дата рождения" и нажать кнопку "Добавить".
При каждом нажатии на эту кнопку на 3 лист активной книги будут последовательно добавляться введенные пользователем данные.
Код процедуры:
Private Sub cmdAdd_Click ()
'открываем 3 лист активной книги
ActiveWorkbook. Worksheets (3). Activate
'определяем последнюю заполненную строку в текущем диапазоне
last_row = Cells (1, 1). CurrentRegion. Rows. Count
Cells (1, 1) = "ФИО"
Cells (1,2) = "Дата"
'записываем в первую пустую строку данные из текстовых полей, предварительно проверив правильность ввода
If last_row >= 1 Then
If TextBox1. Text = "" Or IsDate (TextBox2) = False Then MsgBox "Неверные данные, повторите ввод": Exit Sub
Cells (last_row + 1, 1) = TextBox1. Text
Cells (last_row + 1,2) = Format (TextBox2. Text, "dd. mm. yyyy")
End If
'выравниваем ширину столбцов по содержимому
Columns ("A: B"). AutoFit
End Sub
При нажатии на кнопку "Пользовательская функция" пользователю будет предложено ввести предложение. Введенное предложение будет помещено в 1 ячейку 2-го листа электронной таблицы. Рядом же будет помещен результат пользовательской функции, с помощью которой заданное предложение будет разбито на отдельные слова.
К примеру, дана таблица, один из столбцов которой содержит ФИО. А необходимо получить 3 столбца (1 столбец - фамилии, 2 и 3 соответственно - имена и отчества). С помощью стандартных процедур это сделать довольно сложно.
Поэтому было принято решение создать функцию, которая легко справлялась бы с этой задачей.
Входными аргументами функции будет "предложение" и "номер слова", которое необходимо получить из этого предложения.
Напишем еще одну функцию, которая будет возвращать количество слов в заданном предложении.
Код процедуры:
Private Sub cmdFunction_Click ()
Worksheets (2). Activate
fio = InputBox ("Введите предложение", "Ввод данных", "Самохин Федор Петрович")
Worksheets (2). Cells (1, 1) = fio
'вызов пользовательской функции, которая в качестве результата возвращает количество слов в введенном предложении
n = Количество_слов_в_предложении (fio)
For i = 1 To n
'вызов пользовательской функции, которая в качестве результата возвращает слово из предложения, которое стоит в определенном месте
Worksheets (2). Cells (1, 1 + i) = Слово_из_предложения (fio, i)
Next i
End Sub
Function Слово_из_предложения (Предложение, Номер_слова)
sss = Split (Предложение)
Слово_из_предложения = sss (Номер_слова - 1)
End Function
Function Количество_слов_в_предложении (Предложение) As Integer
If Предложение <> "" Then
sss = Split (Предложение)
Количество_слов_в_предложении = UBound (sss) + 1
End If
End Function
При вводе "Самохин Федор Петрович" результат работы функции показан на рисунке 5. Т.е. функция запускалась 3 раза, в 1 раз она вернула 1 слово из введенного предложения, второй раз - второе слово, третий раз - третье. Т.о. мы разбили введенное предложение по словам.
При нажатии на кнопку "Просмотр" произойдет вывод на экран электронной таблицы для предварительного просмотра перед печатью.
Код процедуры:
Private Sub cmdView_Click ()
Me. Hide
ActiveWindow. SelectedSheets. PrintPreview
UserForm1. Show
End Sub
При нажатии на кнопку "Настройка параметров" появится окно "Параметры страницы".
Код процедуры:
Private Sub cmdParametrs_Click ()
Application. Dialogs (xlDialogPageSetup). Show
End Sub
При этом предусмотрено сохранение всех открытых файлов в любой момент. Для этого нужно нажать на кнопку "Сохранить все" в правом верхнем углу формы.
Код процедуры:
Private Sub cmdSaveAll_Click ()
'сохраняем все открытые книги
For Each w In Application. Workbooks
w. Save
Next w
End Sub
При нажатии на кнопку "Выход" программа будет закрыта, все сделанные изменений будут сохранены.
Код процедуры:
Private Sub cmdExit_Click ()
For Each w In Application. Workbooks
w. Save
Next w
Application. Quit
End Sub
Размещено на Allbest.ru
Подобные документы
Разработка интерфейса программы, обеспечивающего доступ ко всем возможностям среды структурно-визуального программирования. Реализация инструментальных средств, позволяющих связывать компоненты в единое приложение. Создание иерархии классов представления.
дипломная работа [2,3 M], добавлен 11.04.2012Разработка среды структурно-визуального программирования с возможностью решения пользовательских задач в операционной системе по средствам использования готовых компонент. Организация упрощенного проектирования на основе алгоритмических примитивов.
дипломная работа [2,3 M], добавлен 12.04.2012Сущность и функции языков программирования, их эволюция и оценка популярности различных видов. Особенности компьютерных программ, разработанных на компилируемом, интерпретируемом или смешанном языке. Основные классы и иерархия языков программирования.
презентация [873,4 K], добавлен 23.01.2013Системы программирования и их графические возможности. Разработка мультимедиа курса, способствующего эффективному усвоению учащимися базовой школы темы "Графические возможности языка программирования" (на примере языков программирования Basic и Pascal).
дипломная работа [588,3 K], добавлен 29.12.2010Язык разработки, среда реализации, инструменты разработки. Особенности виртуальной среды реализации программ и их учет в разработке программного продукта. Системные макросы и их применение в текстах разработки. Средства визуального программирования.
учебное пособие [1,7 M], добавлен 26.10.2013Расчет трансформатора питания. Численное решение нелинейных уравнений с заданной точностью и дифференциальных уравнений первого порядка. Разработка программы с использованием средств визуального программирования на алгоритмическом языке программирования.
курсовая работа [1,2 M], добавлен 17.08.2013Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.
курсовая работа [407,4 K], добавлен 21.06.2014Основные сведения о языках программирования и их состав. Программа для компьютера. Использование компилятора и операторы. Языки программирования высокого уровня. Концепции объектно-ориентированного программирования. Языки искусственного интеллекта.
презентация [6,3 M], добавлен 14.08.2013Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.
курсовая работа [711,4 K], добавлен 27.07.2014Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.
отчет по практике [139,1 K], добавлен 03.06.2011