
- •Часть 2.
- •8 Архитектура проекта
- •8.1 Введение (основные элементы проекта и их построение)
- •8.1.2 Этапы написания проекта
- •Установка (и удаление) элементов управления на лист Excel
- •Установка начальных значения свойств элементов управления
- •Установка порядка расположение элементов управления (установка одного элемента управления над другим)
- •Создание пользовательской формы
- •Создание модулей макросов проекта
- •Создание событийных процедур элементов управления, а так же событийных процедур родительских объектов
- •Быстрый переход в событийную процедуру элемента управления
- •8.1.3 Изменение свойств проекта
- •8.1.4 Установка и снятие защиты проекта
- •9 Доступность подпрограмм и полей модулей проектов
- •9.1 Введение
- •9.2 Надстройки проектов
- •9.2 Ссылка на другой проект
- •10 Отладка кода программы в vba редакторе
- •10.1 “Компиляция” проекта
- •10.2 Запуск подпрограмм, не имеющих входных параметров из редактора vba
- •10.3 Пошаговый запуск подпрограмм, не имеющих входных параметров
- •10.4 Непосредственный запуск формы из редактора vba
- •10.5 Точки останова и оператор Stop
- •10.6 Аварийное прерывание работы программы приложением Excel
- •10.7 Принудительная остановка и принудительное прерывание программы пользователем
- •10.8 Окно локальных переменных и Окно отладки
- •11 Справочная система vba
- •11.1 Переход к справочной системе
- •11.2 Список имен потомков, методов и свойств объектов в окне редактора модуля
- •11.3 Просмотр списка операторов vba в окне редактора модуля (просмотр библиотек)
- •11.4 Окно просмотра свойств, методов, потомков и родителей объектов
- •12 Дополнительная информация
- •12.1 Параметры работы редактора vba
- •12.2 Защита от макровирусов
- •12.3 Причины, по которым код vba проекта может не исполняться
- •Приложение 1 Задание 1 (автозаполнение пола)
- •Задание 2 (автозаполнение комментариев к числам)
- •Задание 3 (заучиватель иностранных слов)
- •Задание 4 (телефонная книжка с поиском)
- •Задание 5 (программирование связей таблиц Excel)
- •Задание 6 (защита служебных полей таблицы Excel)
- •Приложение 2 (Программирование через редактирование макроса) Введение
- •Запись макроса в книгу Excel
- •Запуск макроса из меню.
- •Быстрый переход в код макроса
- •Пример создание процедуры через макрос.
- •Некоторые замечания по запуску макроса из событийных процедур
- •Назначение управляющих клавиш для запуска готового макроса Назначение управляющих клавиш макросам через меню приложений
- •Программное назначение управляющих клавиш макросам
- •Приложение 3( Создание меню ) Введение
- •Типы меню приложений
- •Создание (и удаление) подпунктов главного меню через меню приложений Создание (и удаление) подпункта главного меню
- •Создание (и удаление) пункта меню к макросу
- •Удаление меню
- •Добавление пунктов в меню
- •Свойства и методы пунктов меню
- •Переключатель в пункте меню
- •Коды пиктограмм пункта меню
- •Односеансное контекстное меню
- •После выбора пункта ПервыйУровень
- •После выбора пункта ВторойУровень1 Назначение управляющих клавиш к пункту меню
- •Приложение 4 ( Программная обработка модулей vba ) Введение
- •Экспорт модуля проекта в файл
- •Импорт модуля проекта из файла
- •Импорт модуля через “организатор” (данный код только для Word приложения)
- •Создание свойств и методов пользовательского класса
- •Создание событий пользовательского класса
- •Приложение 6 (Ссылка на приложение ms Office)
- •Приложение 7 (связь с таблицами и запросами базы данных) Введение
- •Связь с базой данных через указатели
- •Непосредственная загрузка таблицы базы данных в Excel таблицу
- •Форма для интерактивной работы с записью таблицы базы данных
- •С записями таблицы базы данных
- •Браузер таблиц и запросов базы данных
- •Методы поиска объекта Recordset
- •Пример использования метода Seek
- •Пример использования методов Find
- •Приложение 8 (Обращение к api-функциям) Введение
- •Скрытие и отображение панели задач через api функции
- •Запуск ярлыка и исполняемых файлов через api функцию
- •Приложение 9 (Основные понятия визуального программирования на доступных примерах)
- •Яблоко1.Сплющить
- •8 Архитектура проекта 3
- •8.1 Введение (основные элементы проекта и их построение) 3
- •Приложение 3( Создание меню ) 64
- •Приложение 4 ( Программная обработка модулей vba ) 90
- •Приложение 5 (Создание модуля класса) 94
- •Приложение 6 (Ссылка на приложение ms Office) 108 Приложение 7 (связь с таблицами и запросами базы данных) 113
- •Часть 2
Скрытие и отображение панели задач через api функции
Ниже нами приведен код модуля макросов, позволяющий скрывать и отображать панель задач в Excel VBA через API функции:
'API функция для определения номера окна
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal IpClassName As String, _
ByVal IpWindowName As String) As Long
'API функция для скрытия и показа окна
Private Declare Function ShowWindow Lib "user32" ( _
ByVal hwnd As Long, ByVal ncmdShow As Long) As Long
'константы для скрытия и показа окна
Private Const SW_Hide = 0, SW_Show = 5
Private Function НомераОкнаЗадач() As Long
НомераОкнаЗадач = FindWindow("Shell_TrayWND", vbNullString)
End Function
Public Sub СкрытьПанельЗадач()
ShowWindow НомераОкнаЗадач, SW_Hide
End Sub
Public Sub ПоказатьПанельЗадач()
ShowWindow НомераОкнаЗадач, SW_Show
End Sub
Запуск ярлыка и исполняемых файлов через api функцию
В VBA существует оператор для запуска исполняемых файлов Shell, однако, данным оператором невозможно запустить исполняемый файл через ярлык, невозможно открыть директорию диска по ярлыку, невозможно запустить файл MS Office через ярлык. Так же нельзя задать в параметре запуска имя файла содержащего пробелы. Преодолеть эти трудности возможно при помощи соответствующей API функции:
' Объявляем API функцию
Public Declare Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
‘Упрощенная API функция для запуска файла
Function ЗапускФайла(ByVal ИмяФайла As String, _
Optional ПараметрыЗапуска As String = "", Optional РабочаяДиректория _
As String = "", Optional ВидОкна As Long = 1) As Long
Dim i As Long
ЗапускФайла = _
ShellExecute(i, "", ИмяФайла, ПараметрыЗапуска, РабочаяДиректория, ВидОкна)
End Function
Sub Запуск_файла_по_имени()
Dim path As String
path = InputBox( _
"Введите полное имя исполняемого файла или полное имя ярлыка для запуска." + Chr(13) + _
"Или введите пустую строку для запуска ярлыка Word.")
If path = "" Then
path = "C:\windows\Рабочий стол\Microsoft Word.lnk"
End If
If ЗапускФайла(path) = 2 Then
MsgBox "Файл не запущен!"
End If
End Sub
Приложение 9 (Основные понятия визуального программирования на доступных примерах)
В VBA существует такое понятие как класс и объект(экземпляр класса).
Объект имеет ряд следующих характеристик:
Свойства – определяют вид объекта или его состояние.
Методы – способы изменения свойств объекта.
События – события, происходящие с объектом.
Разберем эти понятия, опираясь на известные всем нам понятия.
Существуют фрукты: яблоки, груши, апельсины и т.п. Каждый конкретный фрукт принадлежит определенному классу - Яблоко к классу Яблоки, Груша к классу Груши и т.д.
Каждый конкретный фрукт обладает рядом свойств, так, например, яблоко имеет свойства: размер – определяющего его величину, вкус – определяющий кислое или сладкое яблоко, цвет – определяющий раскраску данного фрукта. Каждое конкретное яблоко является объектом, или экземпляром из класса Яблоки. Каждое яблоко может иметь определенное значение своих свойств, совпадающих или не совпадающих со значениями свойств других яблок, но при этом оно остается уникальным объектом Яблоко из класса Яблоки (см. Рис 32).
Рис 32 Классы и Объекты
Если бы яблоки были объектами VBA, то каждое из существующих в мире яблок имело бы свое уникальное имя, причем значение свойства(имя) не разу бы не повторилось. По умолчанию яблоки именовались следующим образом: Яблоко1, Яблоко2, Яблоко3 и т.д. Хотя допускалось бы назвать яблоко и по-другому, например, МойФрукт. Но по такому имени трудно догадаться, что это имя объекта из класса Яблоки.
Если яблоко растет на дереве, то у природы существую различные методы, для того, что бы изменить свойство объекта яблока, по мере развития яблока, меняется ее размер, цвет, вкус. Размер, вкус и цвет, как уже говорилось, это свойства яблока, которые определяют его внешний вид и состояние. Если бы природа была программистом VBA, а яблоко являлось объектом VBA, то она для изменения свойств яблока вкуса и цвета написала бы следующую программную инструкцию:
Яблоко1.Цвет = красный
Яблоко1.Вкус = сладкий
В данном примере свойство Цвет и Вкус принадлежит объекту: Яблоко1, т.к. имя свойства отделяется от имени соответствующего объекта точкой. При выполнении данной программной инструкции в объекте начнут действовать соответствующие методы скрытые внутри соответствующих свойств, Яблоко1 сначала станет красным, а затем, сладким. Однако, не все методы VBA вызываются таким же образом, каким мы вызвали их в указанном выше примере.
Допустим, мы хотим изменить форму яблока, для этого надо его сплющить, т.е. применить соответствующий метод “сплющить”, в этом случаи, данный метод запустится следующем образом: