Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Знакомство с VBA.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.31 Mб
Скачать

1. Автоматический запуск Программы vba.

  Теперь, когда появился законченный проект программы VBA, возникает вопрос как запускать программу минуя редактор  VBA? Нужно сделать вызов нашей программы в момент открытия книги электронной таблицы, т.е. другими словами когда для объекта "Workbook"  происходит событие "Workbook_Open"  Нужно выполнить код (Рис.1):

Privite Sub Workbook_Open()

           UserForm1.Show                   'Вызов программы

End Sub

Рис. 1. Код вызова программы.

    Добавляем код в нашу программу "RRasch23.xls"(Primer4.rar)как показано на Рис.1. Сохраняем изменения, закрываем всё и открыв файл "RRasch23.xls" смотрим на результат. Как это работает поясним на рис. 2:

Рис. 2 Схема автозапуска VBA приложения.

        При открытии книги Excel выполняется автозапуск приложения VBA, которое открывается поверх окна  Excel. При закрытии приложения VBA управление передаётся в Excel и электронную таблицу можно закрыть.

 Нас интересует только панель нашей программы и книгу Excel таблицы можно и не показывать. Нет проблем. Делаем нашу книгу Excel таблицы невидимой, а при закрытии программы нужно закрывать и  Excel. Как это сделать? Рассмотрим рис.3:

 

Рис. 2 Схема автозапуска VBA приложения с переводом Excel в фоновый режим.

В алгоритм работы нашей программы добавим команды : cкрыть Excel, cделать Excel видимым, закрыть Excel. При открытии приложения VBA Excel переводится в фоновый режим(делается невидимым). Когда нужно закрыть программу, то сначала Excel делаем видимым, а затем закрываем Excel(при выполнении данной команды закрывается и наша программа).  

    В программу внесём следующий код:

- для  процедуры Private Sub UserForm_Initialize() добавим код

'******** ПЕРЕВОДИМ Excel в фоновый режим******** Application.Visible = False '************************************************

- добавить процедуру для выхода из программы вместе с Excel 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) '******** Сделать Excel видимым ******** Application.Visible = True Application.Quit '*************************************** End Sub

2. Взаимодействие приложения vba с ячейками Excel.

 

Программирование на VBA - это управления объектами приложения. Ячейки Вот и рассмотрим упрощённую структуру приложение Excel:

Application

WorkbookS

................... Workbook

WorksheetS

........................... Worksheet

Cell

..........

Excel приложение является объектом для VBA-программирования с именем- Application. В данный объект могут входить несколько книг -Workbook, объединённые в коллекцию Workbooks. Данный объект содержит все открытые объекты Workbook, а в книге находятся листы Worksheet, объединённые в коллекцию Worksheets. Коллекция Worksheets содержит по одному объекту Worksheet для каждого листа текущей книги. Листы разбиты на ячейки (Cell). При работе активными могут быть только одна книга и один лист.

Коллекции (WorkbookS, WorksheetS) имеют два важных метода и два свойства :

 

Add - добавить элемент в коллекцию;

Remove - удаляет элемент из коллекции;

Count - возвращает количество элементов в коллекции;

Item - возвращает элемент коллекции.

 

И так первым делом испытаем свойства Count и Item . Создаём Excel файл c именем "Test.xls" и открыв данный файл переходим в редактор VBA (alt+F11). Создаём форму. На форму добавим два элемента Label и установим свойства :

 

Label1

Наименование свойства

Значение

Name

Label1

Caption

Кол-во книг открыто:

Lb1Kol1

Наименование свойства

Значение

Name

Lb1Kol1

Caption

0

SpecialEffect

2- fmSpecialEffectSunken

TextAlign

3-fm TextAlignRight

 

Для события инициализации формы напишем код :

 

Private Sub UserForm_Initialize()

Me.Width = 250 'Ширина формы

Me.Height = 100 'Высота формы

Me.Caption = "Test v.5.1." 'Заголовок формы

kol = Application.Workbooks.Count 'Определяем кол-во открытых книг

lblKol1.Caption = kol 'Вывод значения Kol на форму

 

End Sub

 

Самое главное в двух последних строчках - определяем количество открытых книг. Если перед запуском программы не было открытых книг, то при запуске должно быть одна открытая книга(см. рис.4). Для внесения ясности можно поэкспериментировать:

- Открыть какую ни будь книгу excel и запустить программу;

- Открыть две книги excel и запустить программу.

 

 

Рис. 4. Результат тестовой программы - открыта одна книга.