Программирование макросов в Эксель. Программирование макросов в excel


 Программирование макросов на VBA в Microsoft Excel

МОДУЛЬ 1. ИСПОЛЬЗОВАНИЕ МАКРОРЕКОРДЕРА ДЛЯ ЗАПИСИ МАКРОСОВ

Общее знакомство со средствами создания макросов. Разбор нюансов использования режимов относительных и абсолютных ссылок для целей записи своих действий

1.1 Простая запись макроса в Excel

1.2 Использование абсолютных и относительных ссылок

1.3 Просмотр и корректировка программного кода, сгенерированного автоматически

МОДУЛЬ 2. ОСНОВЫ РАБОТЫ В РЕДАКТОРЕ VBA. ОСНОВНЫЕ СВОЙСТВА И МЕТОДЫ РАБОЧИХ КНИГ, ЛИСТОВ И ЯЧЕЕК

Знакомимся с окном редактора VBA, изучаем минимально необходимый «словарный запас» и разбираем правила «синтаксиса и пунктуации» - все это потребуется для написания законченных процедур. Здесь же увидим, в каких случаях пригодится окно отладчика

2.1 Особенности интерфейса окна VBA

2.2 Создание процедуры типа Sub, ввод программного кода, запуск макроса

2.3 Основные свойства и методы объекта Workbook

2.4 Основные свойства и методы объекта  Worksheet

2.5 Основные свойства и методы объекта  Range

МОДУЛЬ 3. ОБЪЕКТНОЕ ПРОГРАММИРОВАНИЕ. ОПРЕДЕЛЕНИЕ ТИПОВ ДАННЫХ, НЕОБХОДИМОСТЬ ИСПОЛЬЗОВАНИЯ ПЕРЕМЕННЫХ И КОНСТАНТ

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

3.1 Инструкция управления выполнением команд: If…Then…Else

3.2 Инструкция управления выполнением команд: Select Case

3.3 Основы объектно-ориентированного программирования

3.4 Разбор модели объектов Excel, правила составления ссылок на объекты

3.5 Создание объектных переменных и использование конструкции With … End With

МОДУЛЬ 4. ПРОГРАММИРОВАНИЕ МНОГОКРАТНЫХ ДЕЙСТВИЙ С ЯЧЕЙКАМИ И РАБОЧИМИ ЛИСТАМИ ПРИ ПОМОЩИ ЦИКЛОВ

Как быть в случае необхоидмости многократно повторить одинаковое действие по отношению к большому числу ячеек, листов или других объектов? А если их колчиество вообще неизвестно (перебрать все листы книги, например)? На все эти вопросы ответит настоящий раздел, посвященный использованию различных видов циклов

4.1 Обзор разновидностей циклов в VBA

4.2 Инструкция управления выполнением команд (счетчик): For...Next

4.3 Инструкция управления выполнением команд (условие): Do...Loop

4.4 Инструкция управления выполнением команд (объект): For Each...Next

МОДУЛЬ 5. ПРАВИЛА СОЗДАНИЯ ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ И ПРИМЕРЫ ИХ ИСПОЛЬЗОВАНИЯ

Если мы не редактируем ячейки или листы, то скорее всего занимаемся расчетами. На все ли случаи жизни есть у Excel встроенные функции? Как заставить его сложить не все выделенные ячейки, а через одну? Как просуммировать все ячейки определенного цвета? А, быть может, есть желание и необходимость громозкий расчет (занимающий строчек так пять-семь в строке формул) упаковать в небольшую пользовательскую функцию? Именно сейчас и научимся это делать с помощью VBA

5.1 Создание процедуры типа Function

5.2 Программирование алгоритма действий и вычислений:

  • простой алгоритм вычислений
  • алгоритм вычислений с проверкой свойств ячеек
  • пользовательской функции на рабочем листе

МОДУЛЬ 6. СОЗДАНИЕ ПРОЦЕДУРЫ ОБРАБОТКИ ОШИБОК. ЗАЩИТА ПРОЕКТА VBA. АВТОМАТИЗАЦИЯ ЗАПУСКА МАКРОСОВ

Можно ли при открытии файла выбрать, какие листы мы хотели бы видеть? Или сделать формулу «живой» и исключить всякую возможность ее испортить? Конечно, да! А еще можно «пошпионить» за коллегами и узнать с помощью VBA – кто, когда и в каких ячейках работал. VBA покажет, у кого нет алиби и в какое время :-) Потому что в завершение курса мы узнаем, как заставить макрос работать в нужный нам момент. Как сделать кнопки и внедрить кнопки в интерфейс программы – узнаем здесь же

6.1 Пошаговое тестирование программы и инструменты отладки

6.2 Параметры безопасности и средства защиты проекта VBA

6.3 Использование кнопок для запуска макросов

6.4 Автоматический запуск макросов на основе событий рабочих книг и листов

 

www.centrmasterov.ru

Программирование макросов в Эксель

Documents войти Загрузить ×
  1. Иностранные языки
advertisement advertisement
Related documents
1.Настройка параметров отчета
VBA в приложении к Word
1 - inf1550.ru
Практическое задание «Карточка клиента»
Создание тематического кроссворда
Урок 5. Тема: проект№5 «Светофор» Цели урока:
Проектная деятельность учащихся физикоматематического
Лабораторная работа № 13.
Макрорекодер файл
Тема: Решение задач в Microsoft Excel с
Фильт на основе кода VBA
Лабораторная работа 2-4. Word. Применение
Лекция 13н Макросыx
Лабораторная работа № 1
Описание лабораторной работы № 9

studydoc.ru

Программирование макросов в excel

Министерство образования РФ

ГОУ ВПО Глазовский Государственный педагогический институт

Им. В.Г. Короленко

Колледж информационных и социальных коммуникацийКурсовая работа

по учебной дисциплине

«Техническая разработка программных продуктов»

на тему: «Программирование макросов в Excel»Выполнили студенты

 группы: П – 31

 Заякин А.Ю.

Подпись          Дата

Научный руководитель:Глазов 2004.

Содержание.

1.  Введение……………………………………..…………………………….3

            

2.  Глава I…………………………………………………...…………………53.  Глава II…………………………………………………………………..…6

          3.1 Язык программирования……………………………………..…..6

          3.2  Блок схема …..…...………………………………………………...8

          3.3  Схема связей ..…...………………………………………………...9

          3.4 Программный код………………………….…………………….104.   Заключение………………………………………………………………17

    

  1. Список используемой литературы……………………………………18       
    

Введение

Цели

Цель курсовой работы показать на примере программирование макросов в Excel 

Задачи

Создать программу, которая могла кодировать и декодировать документ Excel при нажатии определенного сочетания клавиш. По нажатию клавиш должно выводится окно для ввода пароля (для защиты от ошибки ввод пароля должен производится дважды), так же должны находится 2 переключателя которые устанавливают действие программы: кодировать или декодировать. Из-за большого объема информации следует выводить счетчик процентного состояния нашего процесса. Также должен присутствовать доступный интерфейс.

Гипотеза

Реализация алгоритма кодировки такова:

Вырезаем из выделенного объекта ячеек берем 1 ячейку и получаем из нее текстовое значение. Из этого значения вырезаем первый символ вырезаем и пароля первый символ складываем их ascii коды и получаем значение. Если наше значение больше допустимо возможного то вычитаем из него 255 и получаем  ascii код символа. Преобразуем этот код в строку. Берем дальше второй символ и второй символ пароля и производи тоже действия и т.д. Если символов в пароле меньше чем строковое значение тогда при достижении последнего символа пароля переходим обратно на первый. Потом все полученные значения преобразуем в строку и присваиваем ячейке, из которой она было взято.

Для того что бы запустить программу надо открыть документ excel с программой, выделить нужную область с которой следует работать и нажать сочетание клавиш ctrl+k. Выбрать нужные настройки ввести пароль и нажать ОК. Состояние процесса выводится в прогресс бар приложения с помощью стандартных функций.

Глава I

Глава II

3.1. Язык программирования.

Visual Basic разработан корпорацией Microsoft специально для создания приложений, работающих под операционными системами из семейства Windows. Последняя версия этого продукта - Visual Basic 6 – входит в состав пакета программ для профессиональной разработки визуальной разработки визуальных приложений Visual Basic 6 и представляет собой интегрированную среду разработки (IDE, Integrated Development Environment), то есть программную среду, содержащую инструменты, которые позволяют значительно ускорить процесс разработки и создание программ. Эти возможности ставят Visual Basic 6 в один ряд с такими признанными лидерами в области визуального программирования, как Visual C++, Delphi, Bridge View и т.д.

 Благодаря своим возможностям в сочетании простотой освоения, диалекты Visual Basic (Visual Basic for Aplication и Visual Basic Script) широко используются в качестве внутренних языков во многих приложениях, например, в Microsoft Office, Visio, 1C.

Среда разработки Visual Basic 6 выпускается в трех изданиях:

·        Visual Basic 6 для начинающих (Learning Edition), представляющее собой демонстрационную версию, в которую включены только основные возможности;

·        Visual Basic 6 для профессионалов (Professional Edition), основная (стандартная) версия, включающая в себя большинство инструментов и дополнительных средств, позволяющих выполнять разработку приложений на профессиональном уровне;

·        Промышленное издание Visual Basic 6 (Enterprise Edition), расширенная версия для разработчиков корпоративных систем. Это издание включает в себя большое количество инструментов, элементов управления и средств, позволяющих разрабатывать как простые, так и клиент- серверные приложения.

Предком Visual Basic был язык программирования Basic. Этот язык (Basic – Beginners Allpurpose Symbolic Instruction Code, многоцелевой код символьных инструкций для начинающих) был специально разработан для освоения основ программирования, создания простых программ и широко использовался для обучения школьников.

Язык объектного программирования Visual Basic, хотя и имеет в своем названии слово Basic, коренным образом отличается от своей основы. Во-первых, Visual Basic – это объектно-ориентированный язык, то есть язык оперирует объектами, над которыми производится действие, во-вторых, изменилась среда программирования – появилась возможность осуществлять непосредственное наблюдение за построением проекта, то есть проектировать приложение, и, в-третьих, изменился сам подход к программированию. Если раньше код программы выполнялся последовательно от начала к концу, то теперь четкая структура последовательности выполнение операторов ”размыта” – весь программный код разбит на процедуры (которые так же называют подпрограммами), которые могут быть вызваны из любого места программы.3.2. Блок схема.

3.3. Схема связей.

1.     Cвязь предназначенная для запуска кодирования выделенной области.

2.     Процедура декодирования берет значение и передает его а ей возвращается декодированное значение.

3.     Cвязь предназначенная для запуска декодирования выделенной области.

4.     Процедура кодирования берет значение и передает его а ей возвращается закодированное значение.

3.4. Программный код.

UserForm1 (главная форма проекта)'переменная для хранения пароляпароля

Dim password As String

' переменная для имени активного листа, и рабочего промежутка

Dim n, m, List

' переменная для значения ячейки

Dim g

' нажатие на кнопку отмена

Private Sub ComCanc_Click()

' выход

End

End Sub

'  нажатие на кнопку ОК

Private Sub ComOK_Click()

' если в одно из текстовых полей  не введена информация тогда выводится окно с предупреждением и происходит выход

If Txt1.Text = "" Or Txt2.Text = "" Then MsgBox "Введите пароль": Exit Sub

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

If Txt1.Text <> Txt2.Text Then MsgBox "Пароль введен неправильно": Exit Sub

' присваиваем текст введенного пароля переменной хранящей пароль

password = Txt1.Text

' если отмечен процесс кодирование тогда переходим к процедуре кодирования

If OptionButton1.Value = True Then Call coding

' если отмечен процесс декодирование тогда переходим к процедуре декодирования

If OptionButton2.Value = True Then Call decoding

' обращение к процедуре нажатие на кнопку отмена

Call ComCanc_Click

End Sub

' процедура кодирования

Private Sub coding()

' обращаемся к процедуре которая находит раьочий лист и размер рабочего промежутка

Call schet

' переменной NewSheet присваиваем имя нашего листа

Set NewSheet = Sheets.Item(List)

'запись в переменную  0 процентного статуса

gh = " " & "0%" & "  "

' запускаем цик по столбцам и строкам

For i = 1 To 256

' при достижении кратного 20 процентного состояния записываем в переменную процент выполнепния

If i / 50 = Int(i / 50) Then gh = " " & Str(i / 50 * 20) & "%" & "  "

' используем знак | как индикатор выполнения который изменяется при переходена новое поле

gh = gh + "|"

' выводим в статус бар идентификатор выполнения

Application.StatusBar = gh

For j = n To m

' присваиваем переменной g значение выбранной ячейки по параметрам цикла

g = NewSheet.Cells(j, i).Value

' если ячейка пустая то переходим к другой ячейки

If g = "" Then GoTo 1

' обращаемся к процедуре кодирования строки и присваиваем значение в выбранное поле

NewSheet.Cells(j, i).Value = codsv(g)

1 Next

Next

' выводим в статус бар идентификатор выполнения

Application.StatusBar = " 100%  Процесс кодирования успешно завершон."

End Sub

' процедура декодирования

Private Sub decoding()

' обращаемся к процедуре которая находит раьочий лист и размер рабочего промежутка

Call schet

' переменной NewSheet присваиваем имя нашего листа

Set NewSheet = Sheets.Item(List)

gh = " " & "0%" & "  "

' запускаем цик по столбцам и строкам

For i = 1 To 256

' при достижении кратного 20 процентного состояния записываем в переменную процент выполнепния

If i / 50 = Int(i / 50) Then gh = " " & Str(i / 50 * 20) & "%" & "  "

' используем знак | как индикатор выполнения который изменяется при переходена новое поле

gh = gh + "|"

' выводим в статус бар идентификатор выполнения

Application.StatusBar = gh

For j = n To m

' присваиваем переменной g значение выбранной ячейки по параметрам цикла

g = NewSheet.Cells(j, i).Value

' если ячейка пустая то переходим к другой ячейки

If g = "" Then GoTo 1

' обращаемся к процедуре декодирования строки и присваиваем значение в выбранное поле

NewSheet.Cells(j, i).Value = decsv(g)

1 Next

Next

' выводим в статус бар идентификатор выполнения

Application.StatusBar = " 100%  Процесс декодирования успешно завершон."

End Sub

'процедура которая находит раьочий лист и размер рабочего промежутка

Private Sub schet()

t = InStr(1, addres, "$")

t1 = InStr(t + 1, addres, "$")

t2 = InStr(t1 + 1, addres, "$")

' определяем верхний предел

n = Mid(addres, t1 + 1, t2 - t1 - 2)

t3 = InStr(t2 + 1, addres, "$")

' определяем нижний предел

m = Mid(addres, t3 + 1, Len(addres) - t3)

' определяем имя лист

List = Mid(addres, 1, InStr(1, addres, ":") - 1)

End Sub

' процедура декодирования переданной строки

Function decsv(p) As String

' Цикл с 1 по последний элемент переданной строкт

For i = 1 To Len(p)

' ссуматор выводит индекс элемента пароля будет использоватся в кодированиии

c = c + 1

' если индекс не существует тогда использеум 1 индекс

If c >= Len(password) Then c = 1

' получаем ascii код используемого символа

a1 = Asc(Mid(p, i, 1))

' получаем ascii код символа пароля с которым будем ссумировать

a2 = Asc(Mid(password, c, 1))

' ссумируем 2 ascii кода и получаем закодированный ascii код

a1 = a1 - a2

' если код выкодит за дозволенные промежутки тогда тогда приводим в нормальное значение

If a1 <= 0 Then a1 = a1 + 255

' создаем закодированную строку

TempStr = TempStr + Chr(a1)

Next

' возвращаем закодированную страку

decsv = TempStr

End Function

' процедура декодирования переданной строки

Function codsv(p) As String

' Цикл с 1 по последний элемент переданной строкт

For i = 1 To Len(p)

' ссуматор выводит индекс элемента пароля будет использоватся в кодированиии

c = c + 1

' если индекс не существует тогда использеум 1 индекс

If c >= Len(password) Then c = 1

' получаем ascii код используемого символа

a1 = Asc(Mid(p, i, 1))

' получаем ascii код символа пароля с которым будем дессумировать

a2 = Asc(Mid(password, c, 1))

' ссумируем 2 ascii кода и получаем декодированный ascii код

a1 = a1 + a2

' если код выкодит за дозволенные промежутки тогда тогда приводим в нормальное значение

If a1 >= 256 Then a1 = a1 - 255

' создаем декодированную строку

TempStr = TempStr + Chr(a1)

Next

' возвращаем декодированную страку

codsv = TempStr

End Function

' процедура активации формы

Private Sub UserForm_Activate()

' выводим адреса выбранной области

Label3.Caption = addres

End Sub

' процедура загрузки формы

Private Sub UserForm_Initialize()

' выводим адреса выбранной области

Label3.Caption = addres

End SubModule1 (модуль)' переменная для хранения имени используемого листа и верхнего и нижнего предела строк кодирования

Public addres

' Макроз вызывается нажатием Cnrl-k и запускает макрос2

Sub Макрос1()

    Application.Run "Книга1.xls!Макрос2"

End SubSub Макрос2()

' запускает главную форму проэкта

UserForm1.Show

End SubЭтаКнига.xls (события связанные с файлом)' процедура запускается при выборе ячеек таблици

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)

    ' переменной присваиваем именя используемого листа и верхнего и нижнего предела строк кодирования

    Module1.addres = Sh.Name & ":" & Target.address

End Sub

Заключение.

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

Программа VBА и язык VB дает неограниченные возможности для программиста т.к. существует, облегчает его учесть малым нагромождением функций и процедур предусмотренными программистами Microsoft на стадии разработки языка.

Список используемой литературы.

1.     А.Н.Степанов, “Информатика”,2003г.

2.     Ю.Шафрин, ”Информатика”, 2003г.

3.     Журин А.А., ”Самый современный самоучитель работы на компьютере”, 2004г.

4.     С.Симонович, Г.Евсеев., “Программирование”, 2001г.

5.     С.Симонович, Г.Евсеев .,“Windows 98”, 2001г.

6.     Б.Карпов Visual Basic 6: специальный справочник. – Спб.: Питер, 2002. –   416 с.

ua.coolreferat.com