Организация программирования в Word с использованием встроенного языка VBA. Организация программирования в таблице Excel с использованием встроенного языка VBA



МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ,

СТАТИСТИКИ И ИНФОРМАТИКИ (МЭСИ)

Самостоятельная работа

по дисциплине «Программирование»

Выполнил студент

Группы ЗОБ-1510Б

Жуков Георгий

Проверил:

Профессор

Смирнов Александр Алексеевич

Москва, 2015

Оглавление

1. Организация программирования вWord с использованием встроенного языкаVBA

1.1 Описание конструкций  языкаVBA, обеспечивающих ветвление

Для организации ветвлений используются условный операторIf и операторSelectCase.

If <условие>Then

  <Блок операторов 1>

[Else

 <Блок операторов 2 >   ]

EndIf

Синтаксис оператора

SelectCase <переменная>

Case <значение 1>

        <последовательность операторов>

       . . .

Case <значениеN>

        <последовательность операторов>

[CaseElse

         <последовательность операторов>]

EndSelect

1.2 Условие задачи на разветвление алгоритма

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

Во-первых, ввод дня и месяца рождения.

Во-вторых, анализ введенной информации и выдачу на экран названия знака зодиака, соответствующего дате рождения.

Примечание. С 22.12 по 20.01 козерог; с 21.01 по 19.02 водолей;

с 20.02 по 20.03 рыбы; с 21.03 по 20.04 овен; с 21.04 по 21.05 телец;

с 22.05 по 21.06 близнецы; с 22.06 по 22.07 рак; с 23.07 по 23.08 лев;

с 24.08 по 23.09 дева; с 24.09 по 23.10 весы;

с 24.10 по 22.11 скорпион; с 23.11 по 21.12 стрелец.

1.3 Распечатка программного кода

Sub InputDate()

Dim day, mon, A  As Integer

Dim S As String

day = Val(InputBox("Введите день рождения", "Ввод дня рождения"))

Do Until (day >= 1) And (day <= 31)

 MsgBox "Введите число от 1 до 31", , "Внимание"

 day = Val(InputBox("Введите день рождения", "Ввод дня рождения"))

Loop

mon = Val(InputBox("Введите месяц рождения", "Ввод месяца рождения"))

Do Until (mon >= 1) And (mon <= 12)

 MsgBox "Введите число от 1 до 12", , "Внимание"

 mon = Val(InputBox("Введите месяц рождения", "Ввод месяца рождения"))

Loop

If ((day >= 22 And day <= 31) And (mon = 12)) Or ((day >= 1 And day <= 20) And (mon = 1)) Then A = 1

If ((day >= 21 And day <= 31) And (mon = 1)) Or ((day >= 1 And day <= 19) And (mon = 2)) Then A = 2

If ((day >= 20 And day <= 31) And (mon = 2)) Or ((day >= 1 And day <= 20) And (mon = 3)) Then A = 3

If ((day >= 21 And day <= 31) And (mon = 3)) Or ((day >= 1 And day <= 20) And (mon = 4)) Then A = 4

If ((day >= 21 And day <= 31) And (mon = 4)) Or ((day >= 1 And day <= 21) And (mon = 5)) Then A = 5

If ((day >= 22 And day <= 31) And (mon = 5)) Or ((day >= 1 And day <= 21) And (mon = 6)) Then A = 6

If ((day >= 22 And day <= 31) And (mon = 6)) Or ((day >= 1 And day <= 22) And (mon = 7)) Then A = 7

If ((day >= 23 And day <= 31) And (mon = 7)) Or ((day >= 1 And day <= 23) And (mon = 8)) Then A = 8

If ((day >= 24 And day <= 31) And (mon = 8)) Or ((day >= 1 And day <= 23) And (mon = 9)) Then A = 9

If ((day >= 24 And day <= 31) And (mon = 9)) Or ((day >= 1 And day <= 23) And (mon = 10)) Then A = 10

If ((day >= 24 And day <= 31) And (mon = 10)) Or ((day >= 1 And day <= 22) And (mon = 11)) Then A = 11

If ((day >= 23 And day <= 31) And (mon = 11)) Or ((day >= 1 And day <= 21) And (mon = 12)) Then A = 12

Select Case A

 Case 1

   S = "Козерог"

 Case 2

   S = "Водолей"

 Case 3

  S = "Рыбы"

 Case 4

   S = "Овен"

 Case 5

   S = "Телец"

 Case 6

  S = "Близнецы"

 Case 7

   S = "Рак"

  Case 8

   S = "Лев"

   Case 9

   S = "Дева"

    Case 10

   S = "Весы"

   Case 11

   S = "Скорпион"

    Case 12

   S = "Стрелец"

 End Select

MsgBox S, , "Вашзнакзодиака"

End Sub

1.4 Распечатка результатов выполнения.

Ввод некорректной информации

Ввод корректных данных:

2. “Организация программирования в таблице Excel  с использованием встроенного языка VBA ”

2.1 Описание организации информации в  таблице Excel

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

Обращение к информации, хранящейся в ячейках может обеспечиваться при использовании конструкцииCells (<номер строки> ,  <номер столбца>).

2.2 Условие задачи на организацию обработки информации, представленной в виде таблицы Excel

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

2.3 Распечатка программного кода

Sub exc1()

Dim Q, max As Integer

Q = Cells(1, 1)

For I = 1 To 1

 For J = 1 To 100

   If Cells(I, J) >= Q Then

    Q = Cells(I, J)

    max = J

   End If

 Next J

Next I

Cells(5, 1) = "Максимальное число"

Cells(5, 4) = Q

Cells(6, 1) = "номер столбца"

Cells(6, 4) = max

End Sub

2.4 Распечатка результатов выполнения.

3. Преобразование информации, расположенной в таблице Excel, в тип данных, определенный пользователем

3.1 Описание организации экономической информации в виде типа данных, определенного пользователем

Для представления совокупности реквизитов, входящих в документ, в виде единого целого, в языкеVBA, предназначен специальный тип данныхUserDefinedType,UDT (Тип, определенный пользователем). Под типом, определенным пользователем, понимается структура данных, состоящая из фиксированного числа  элементов, которые могут иметь различный тип. Каждый элемент пользовательского типа имеет свой идентификатор и тип. Идентификатор в пределах пользовательского типа должен быть уникальным. Пользовательский тип позволяет использовать представление информации, аналогичное записям базы данных.

3.2 Условие задачи на обработку экономической информации, организованной в виде типа данных, определенного пользователем

Третья часть предусматривает создание в прикладном программном продуктеExcel макроса, обеспечивающего обработку информации с использованием типаUDT.

В таблицеExcel имеется документ «товарно-транспортная накладная». Документ содержит следующие реквизиты:

    Во-первых, код поставщика. Реквизит представлен в виде символьной строки длиной в 20 символов;

    Во-вторых, пункт назначения. Реквизит представлен в виде символьной строки длиной в 20 символов;

    В-третьих, название товара. Реквизит представлен в виде символьной строки длиной в 20 символов;

    В-четвертых, количество. Реквизит представлен в виде числа, не имеющего дробной части;

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

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

3.3 Распечатка программного кода

Private Type Ttn

   Code As String * 20

   Goto As String * 20

   Goods As String * 20

   Number As Integer

   Price As Single

End Type

Dim W(100) As Ttn

Sub UDT1()

Dim sum As Single

Cells(1, 1) = "код"

Cells(1, 2) = "пункт назначения"

Cells(1, 3) = "название товара"

Cells(1, 4) = "количество"

Cells(1, 5) = "цена"

L = 2

Do While Cells(L, 1) <> ""

 W(L - 1).Code = Cells(L, 1)

 W(L - 1).Goto = Cells(L, 2)

 W(L - 1).Goods = Cells(L, 3)

 W(L - 1).Number = Cells(L, 4)

 W(L - 1).Price = Cells(L, 5)

 L = L + 1

Loop

N = L - 2

sum = 0

For I = 1 To N

  sum = sum + W(I).Number * W(I).Price

Next I

MsgBox sum, , "Общаясумма"

End Sub

3.4 Распечатка результатов выполнения

4. Организация модульного программирования в языке VBA

4.1 Основная концепция модульного программирования

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

4.2 Условие задачи на обработку экономической информации, с использованием модульного программирования

Четвертая часть предусматривает создание в прикладном программном продуктеExcel макроса, обеспечивающего обработку информации с использованием модульного программирования.

В таблицеExcel имеется документ, содержащий информацию о выбытии работников  по группе предприятий.   Информация содержит следующие реквизиты:

Во-первых, шифр предприятия. Реквизит представлен в виде символьной строки длиной в 20 символов;

Во-вторых, код причины выбытия. Реквизит представлен в виде числа, не имеющего дробной части;

В-третьих, количество выбывших работников. Реквизит представлен в виде числа, не имеющего дробной части.

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

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

4.3 Распечатка программного кода

Private Type Corp

Codecorp As String * 20

   Codefired As Integer

   numb As Integer

End Type

Dim Cor(100) As Corp

Dim rr(100) As Corp

Dim N As Integer

'созданиемассива

Sub mass(ByRef Cor() As Corp, _

                        ByRef N As Integer)

L = 2

Do While Cells(L, 1) <> ""

 Cor(L - 1).Codecorp = Cells(L, 1)

 Cor(L - 1).Codefired = Cells(L, 2)

 Cor(L - 1).numb = Cells(L, 3)

 L = L + 1

Loop

N = L - 2

End Sub

' ввод шифра компании и подсчет сотрудников

Sub fire(ByRef Cor() As Corp, ByRef rr() As Corp, _

                        ByRef N As Integer)

 For I = 1 To N

  If Cor(I).Codecorp = rr(1).numb Then

MsgBox Cor(I).numb, , "Количество выбывших сотруников"

End If

Next I

End Sub

Sub fired2()

Cells(1, 1) = "шифр предприятия"

Cells(1, 2) = "код причины выбытия"

Cells(1, 3) = "Количество выбывших"

rr(1).numb = InputBox("Введите шифр предприятия")

Call mass(Cor, N)

Call fire(Cor, rr, N)

End Sub

4.4 Распечатка результатов выполнения

5. Постановка задачи на обработку информации  в таблице Excel с использованием модульного программирования

5.1 Описание условия задачи

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

5.2 Распечатка программного кода

Type Tsum

 Nazv      As String * 20

 Ssuma     As Single

End Type

Dim List(100) As Tsum

Dim N As Integer

' создание массива из таблицы Excel

Sub Massiv(ByRef List() As Tsum, _

                        ByRef N As Integer)

Dim L As Integer

L = 2

Do While Cells(L, 1) <> ""

 List(L - 1).Nazv = Cells(L, 1)

 List(L - 1).Ssuma = Cells(L, 2)

 L = L + 1

Loop

N = L - 2

End Sub

'Процедурасортировкимассива

Sub Sort(ByRef List() As Tsum, _

                        ByVal N As Integer)

Dim I, J

Dim W As Tsum

For I = 1 To N - 1

  For J = I + 1 To N

  If List(I).Ssuma < List(J).Ssuma Then

W = List(I)

    List(I) = List(J)

    List(J) = W

  End If

  Next J

Next I

End Sub

' Процедура занесения информации в таблицу Excel

'иподсчетобщейсуммы

Sub Table(List() As Tsum, _

                        ByVal N As Integer)

Dim I, sum As Integer

sum = 0

For I = 1 To N

 With List(I)

   Cells(I + 1, 1) = .Nazv

   Cells(I + 1, 2) = .Ssuma

   sum = sum + .Ssuma

 End With

Next I

Cells(5, 5) = "Общая сумма товаров"

 Cells(6, 5) = sum

End Sub

' Процедура, обеспечивающая вызов процедур

Sub Sort_table()

Call Massiv(List, N)

Call Sort(List, N)

Call Table(List, N)

End Sub

5.3 Распечатка результатов выполнения

6. Литература и Internet-ресурсы

  1. Слепцова Лилия Дмитриевна Программирование на VBA в Microsoft Office 2010
  2. Джон УокенбахExcel 2010: профессиональное программирование наVBA =Excel 2010
  3. Смирнов А.А. Прикладное программное обеспечение. Учебное пособие. М.:МЭСИ, 2011.
  4. http://ru.wikipedia.org




Похожие работы, которые могут быть Вам интерестны.

1. ФОРМАЛЬНЫЙ СИНТАКСИС КОНСТРУКЦИЙ ЯЗЫКА ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ VISUAL BASIC

2. МЕТОДИКА ИЗУЧЕНИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON В УГЛУБЛЕННОМ КУРСЕ ИНФОРМАТИКИ С ПРИМЕНЕНИЕМ ДИСТАНЦИОННЫХ КУРСОВ COURSERA

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

4. ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ: ОПЕРАТОРЫ ПРИСВАИВАНИЯ, ВВОДА-ВЫВОДА, БЕЗУСЛОВНОГО И УСЛОВНОГО ПЕРЕХОДА, ВЫБОРА, ЦИКЛА

5. Организация безналичных расчетов с использованием банковских карт

6. ОРГАНИЗАЦИЯ РОЛЕВЫХ ИГР НА УРОКАХ НЕМЕЦКОГО ЯЗЫКА

7. Организация мероприятий недели английского языка в средней школе

8. ОРГАНИЗАЦИЯ ПРОЕКТНОЙ ДЕЯТЕЛЬНОСТИ НА УРОКАХ АНГЛИЙСКОГО ЯЗЫКА В НАЧАЛЬНОЙ ШКОЛЕ

9. Цифровой вольтметр на основе встроенного АЦП микропроцессора ADuC842

10. Автоматизированная подготовка производства коллиматора встроенного визира оптического устройства