дополнительных элементов управления




Мы рассмотрели стандартные элементы управления, которые изначально помещены на панель ToolBox и доступны для размещения в формах. Однако возможности форм VBA этим не ограничиваются. В вашем распоряжении — сотни и тысячи элементов управления, встроенных в Windows, в другие продукты или поставляемые отдельно (в том числе третьими фирмами). Для того чтобы можно было разместить их на форме, щелкните правой кнопкой мыши по пустому пространству в ToolBox, выберите пункт контекстного меню Additional Controls, а затем в списке выберите нужный элемент. Правда, при использовании нестандартных элементов управления необходимо помнить, что при переносе программы (файла Office) на другой компьютер вам потребуется обеспечить на нем наличие необходимых библиотек.

Очень часто в программах используются дополнительные элементы управления Internet Explorer, Acrobat Reader, Календарь, проигрыватели аудио- и видеофайлов и т. п. Например, чтобы разместить на форме элемент управления Microsoft Web Browser (в русифицированной версии Windows он называется Обозреватель веб-страниц (Microsoft)), который представляет окно Internet Explorer, нужно выполнить следующие действия:

r щелкнуть правой кнопкой мыши по пустому пространству в окне Toolbox и в контекстном меню выбрать Additional Controls;

r в открывшемся списке выбрать Microsoft Web Browser (или Обозреватель веб-страниц (Microsoft));

r изменившимся курсором мыши очертить на форме ту область, которую будет занимать этот элемент управления.

Далее нужно позаботиться о программном коде для этого элемента управления. Созданный нами на форме элемент управления по умолчанию будет называться WebBrowser1. Можно выбрать любое из доступных событий этого элемента управления, а можно использовать этот элемент управления и в событиях других объектов. Например, если нам нужно, чтобы при открытии формы в окне Internet Explorer на ней открывалась определенная страница, можно воспользоваться событием Initialize для формы. Соответствующий код может быть таким:

Private Sub UserForm_Initialize()

WebBrowser1.Navigate " https://www.Asklt.ru "

End Sub

Преимущества использования этого элемента управления очевидны — вы можете расширить функциональность своей формы за счет использования Web-страниц (например, с формами HTML). Internet Explorer обычно установлен на любом компьютере под управлением Windows и поэтому с этим элементом управления не возникает никаких проблем при переносе програм­мы на другой компьютер. Справку по этому элементу управления придется смотреть в MSDN.

Еще один часто используемый элемент управления, который есть практически на всех компьютерах— Сalendar (календарь) (рис. 5.11). В зависимости от версии вашей операционной системы и установленного программного обеспечения он может называться по-разному, у меня на компьютере он называется Calendar Control 8.0. При помощи этого элемента управления пользователю будет очень удобно выбирать нужную дату.

Рис. 5.11. Элемент управления Calendar и надпись, дублирующая значение,
выбранное пользователем в Calendar

Главное свойство этого элемента управления — Value, т. е. та дата, которая выбрана пользователем. Остальные свойства предназначены для отображения внешнего вида календаря.

В Excel на панели ToolBox имеется еще один специфический элемент управления — RefEdit (в списке Additional Controls он называется как RefEditCtrl). Он похож на текстовое поле с кнопкой справа. При нажатии на эту кнопку форма, на которой размещен этот элемент управления, "спрячется", а пользователю будет предоставлена возможность выбрать одну ячейку или диапазон ячеек Excel. После того как пользователь завершит выбор, он опять вернется в окно формы, а в RefEdit будет помещена информация об адресе выбранного диапазона. Такой же адрес, конечно, можно вводить и вручную. Главное свойство этого элемента управления — Value.

Большое количество дополнительных элементов управления предусмотрено для форм Access. Они являются специфическими для Access, и про них будет рассказано в гл. 12.

Задание для самостоятельной работы 5:

Работа с элементами управления

Подготовка:

1. Создайте новую книгу Excel и сохраните ее как Prikaz.xls. Заполните ячейки с А1 по А5 значениями, аналогичными представленным на рис. 5.12. Данные о сотрудниках лучше ввести в родительном падеже, поскольку эти значения будут подставляться в автоматически создаваемый приказ в формате документа Word.

Рис. 5.12. Список сотрудников на листе Excel

2. Откройте редактор Visual Basic и в окне Project Explorer щелкните правой кнопкой мыши по объекту Эта книга и в контекстном меню выберите View Code.

3. В окне редактора кода для этой книги введите следующий код:

'При открытии рабочей книги показываем форму UF1

Private Sub Workbook_Open()

UF1.Show

End Sub

'Специальная процедура, которая печатает приказ в Word

Public Sub DocWrite(sPovod As String, sFio As String, bFlagPremia As

Boolean, bFlagGramota As Boolean, nSummaPremii As Long, sOtvIsp As

String)

Dim oWord As Word.Application

Dim oDoc As Word.Document

Set oWord = CreateObject("Word.Application")

Set oDoc = oWord.Documents.Add()

oWord.Visible = True

oDoc.Activate

With oWord.Selection

.TypeText "Приказ"

.Style = "Заголовок 1"

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeText vbCrLf

.Style = "Обычный"

.TypeText vbCrLf

.TypeText "г.Санкт-Петербург" & Space(90) & Date

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText "За проявленные успехи в " & sPovod &_

" наградить " & sFio & ":"

.TypeText vbCrLf

If bFlagPremia Then

.TypeText vbTab & "- денежной премией в сумме " &_

nSummaPremii & " рублей"

End If

If bFlagGramota Then

.TypeText vbCrLf

.TypeText vbTab & "- почетной грамотой.

" Else

.TypeText "."

End If

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText "Генеральный директор" & vbTab & vbTab &_

vbTab & "Иванов И. И."

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeParagraph

.TypeText vbCrLf

.TypeText vbCrLf

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.TypeText Text:={"Отв. исполнитель " & sOtvIsp).TypeParagraph

End With

End Sub

4. В окне Project Explorer щелкните правой кнопкой мыши по проекту Prikaz.xls и в контекстном меню выберите Insert | UserForm. Выделите созданный вами объект формы и нажмите клавишу < F4 >. В окне Properties введите для свойства Name этой формы значение ufi.

Поместите на форму из Toolbox единственную кнопку — элемент управления CommandButton1. Установите для этой кнопки значение свойства Caption как "напечатать приказ" (без кавычек) и измените размеры и местонахождение этой кнопки, чтобы форма выглядела так, как показано на рис. 5.13.

Рис. 5.13. Заготовка для формы с единственной кнопкой

5. Щелкните правой кнопкой мыши по кнопке CommandButton1 на вашей форме, в контекстном меню выберите View Code и добавьте в код событийной процедуры для события Click этой кнопки следующий код:

Private Sub CommandButtonl_Click()

Dim sPovod As String

Dim sFio As String

Dim bFlagPremia As Boolean

Dim bFlagGramota As Boolean

Dim nSummaPremii As Long

Dim sOtvIsp As String

'Подставить данные из формы

sPovod = "освоении новых информационных технологий"

sFio = "Иванова Ивана Ивановича"

bFlagPremia = True

bFlagGramota = True

nSummaPremii = 100000

sOtvIsp = "Петрова П. П."

'Конец подстановки данных

Call ЭтаКнига.DocWrite(sPovod, sFio, bFlagPremia, bFlagGramota, nSummaPremii, sOtvIsp)

End Sub

6. Запустите вашу форму на выполнение и убедитесь, что она работает: выводит в создаваемый документ Word приказ с фиксированными значениями.

ЗАДАНИЕ:

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

1. Значение переменной sPovod должно выбираться из трех возможных значений: "освоении новых информационных технологий", "внедрении новых программных продуктов" и значение, которое пользователь может ввести через текстовое поле. Используйте для этого набор из трех переключателей и текстовое поле (оно должно быть спрятано, если пользователь выбрал один из первых двух переключателей). По умолчанию должно подставляться "освоении новых информационных технологий".

2. Значение переменной sFio должно выбираться пользователем при помощи комбинированного cписка. В этот комбинированный список должны автоматически помещаться значения из всех непустых ячеек столбца А листа Excel. По умолчанию должно выбираться значение "Иванова Ивана Ивановича".

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

3. Значения переменных bFlagPremia и bFlagGramota должны устанавливаться в зависимости от состояния двух флажков— "Премия" и "Грамота". По умолчанию оба флажка должны быть установлены. Если пользователь снял оба флажка,- то ему должно выводиться предупреждающее сообщение "Не выбрана ни премия, ни почетная грамота!" с отменой вывода документа.

4. Пользователь должен иметь возможность задавать значение переменной nSummaPremii либо при помощи полосы прокрутки с диапазоном значений от 0 руб. до 100 000 руб., либо при помощи текстового поля. Если флажок "Премия" снят, то полоса прокрутки и текстовое поле должны быть спрятаны от пользователя.

Ход полосы прокрутки (увеличение или уменьшение значения при щелчке на кнопках со стрелками) должен быть равен 100 руб.

По умолчанию размер премии должен быть равен 100 руб.

5. Поместите на форму еще одну кнопку Отмена. Эта кнопка должна закрывать текущую форму и срабатывать при нажатии клавиши <Esc>.

6. В заголовке формы должно выводиться значение "Формирование приказа о выплате премии".

Общий вид формы может выглядеть, например, так, как представлено на рис. 5.14.

Рис. 5.14. Готовая форма

Ответ к заданию 5

К пункту 1 задания (работа с переключателями и текстовым полем):

1. В окне Project Explorer два раза щелкните мышью по объекту формы UF1. Затем в ToolBox щелкните по объекту Label и отведите место этому элементу управления в верхней части формы. Щелкните правой кнопкой мыши по созданному элементу управления Label1 и в контекстном меню выберите Properties. Измените значение свойства Caption на "За что:" и при помощи свойства Font подберите подходящий шрифт и его размер.

2. В ToolBox щелкните по элементу управления OptionButton и отведите на форме место этому элементу управления. Повторите эту операцию еще два раза.

3. Откройте свойства первого переключателя. Измените значение свойства Name на optOsvoenie, а значение свойства Caption — на "освоение новых информационных технологий". Для второго переключателя поменяйте значение свойстваName на optVnedrenie и свойствоCaption— на "внедрение новыхпрограммных продуктов", для третьего— на optDrugoe и "другое:" соответственно.

4. В ToolBox щелкните по элементу управления TextBox и поместите его в нужное место формы. Установите для свойства Name этого элемента управления значение txtDrugoe.

5. Щелкните правой кнопкой мыши по пустому месту на форме и в контекстном меню выберите View Code. В списке событий в верхней части окна редактора кода выберите событие Initialize для UserForm и введите для него следующий код:

optOsvoenie.Value = True

txtDrugoe.Visible = False

6. Для события Change переключателя optDrugoe введите следующий код:

If optDrugoe.Value = True Then

txtDrugoe.Visible = True

Else

txtDrugoe.Visible False

End If

7. Перейдите к коду события Click для CommandButton1 и вместо строки:

sPovod = "освоении новых информационных технологий"

введите следующий код:

If optOsvoenie.Value = True Then sPovod = _

"освоении новых информационных технологий"

If optVnedrenie.Value = True Then sPovod = _

"внедрении новых программных продуктов"

If optDrugoe.Value = True Then sPovod = txtDrugoe.Value

8. Запустите форму на выполнение, напечатайте приказ и убедитесь, что все работает согласно поставленным условиям.

К пункту 2 задания (работа с комбинированным списком):

1. Разместите на форме еще один элемент управления Label с надписью "Кого: " и настройте для него шрифт.

2. Щелкните в Toolbox по элементу управления ComboBox и выделите для него место на форме. Присвойте созданному элементу управления ComboBox имя sFio.

3. Откройте код для события Initialize нашей формы UserForm и дополните его следующими строками:

Dim oColumn As Range

Dim oCell As Range

Set oColumn = Columns("A")

For Each oCell In oColumn.Cells

If oCell.Value о "" Then

cbFIO.Addltem oCell.Value

End If

Next cbFIO.Listlndex = 0

4. Перейдите к коду события Click для CommandButton1 и вместо строки:

sFio = "Иванова Ивана Ивановича"

введите следующий код:

sFio = cbFIO.Value

5. Запустите форму на выполнение и убедитесь, что все работает нормально.

К пункту 3 задания (работа с флажками):

1. При помощи ТооШох поместите на форму два элемента управления СheckBox. Для первого элемента свойству Name присвойте значение СhPremia и для свойства Caption — значение "Премия", для второго — chGramota и "Почетная грамота" соответственно.

2. Откройте код события Initialize формы UserForm и дополните его сле­дующими строками:

chPremia.Value = True

chGramota.Value = True

3. Перейдите к коду события Сlick для CommandButton1 и вместо строк:

bFlagPremia = True bFlagGramota = True

введите следующий код:

bFlagPremia = chPremia.Value

bFlagGramota = chGramota.Value

If bFlagPremia = False And bFlagGramota = False Then

MsgBox "He выбрана ни премия, ни почетная грамота!" Exit Sub

End If

4. Запустите форму на выполнение и убедитесь, что все работает нормально.

К пункту 4 задания (применение полосы прокрутки и дублирующего текстового поля):

1. Поместите на форму еще один элемент управления Label с надписью

"Сумма премии:". Присвойте его свойству Name значение lblSum.

2. Поместите рядом текстовое поле и присвойте его свойству Name значение txtSum.

3. Разместите под текстовым полем элемент управления ScrollBar и присвойте следующие значения его свойствам:

· Name — значение sbSum;

· Min — значение 0;

· Мах — значение 100 000;

· SmallChange — значение 100.

4. Для события Change элемента управления sbSum введите следующий код:

txtSum.Value = sbSum.Value

5. Для события change элемента управления txtSum введите следующий код:

sbSum.Value = CLng(txtSum.Value)

Такой код является потенциально опасным, поскольку не проверяется вводимое пользователем в текстовом поле значение. Если это значение будет невозможно преобразовать в числовое или оно окажется больше 100 000, то возникнет ошибка времени выполнения. Как предупреждать появление ошибок и перехватывать их, будет рассмотрено в гл. 6.

6. Для события Initialize нашей формы UserForm добавьте следующий код:

sbSum.Value = 100

txtSum.Value = 100

7. Для события Change элемента управления chPremia добавьте следующий код:

If chPremia.Value = False Then

lblSum.Visible = False

txtSum. Visible = False

sbSum.Visible = False

Else

lblSum.Visible = True

txtSum. Visible = True

sbSum.Visible = True

End If

8. Для кода Click кнопки CommandButtonl вместо кода: nSummaPremii = 100000

впишите код: nSummaPremii = sbSum.Value

9. Запустите форму на выполнение и убедитесь, что все работает нормально.

К пункту 5 задания (применение кнопки):

1. Разместите на поле еще одну кнопку и настройте значения ее свойств следующим образом:

· Name — значение btnEscape;

· Caption — значение "Отмена";

· Cancel — значение True.

2. Для события click этой кнопки поместите код

Unload Me

К пункту 6 задания (изменение заголовка формы):

1. Щелкните правой кнопкой мыши по пустому месту на форме и в контекстном меню выберите Properties.

2. Для свойства Caption настройте значение "Формирование приказа о выплате премии".

3. Запустите форму на выполнение и убедитесь, что приказы печатаются правильно.

Программирование в Excel

11.1. Зачем программировать в Excel

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

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

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

r очень часто пользователи, не имея возможности обратиться к профессиональным программистам, самостоятельно реализуют нужные им приложения в таблицах Excel. Во множестве организаций, например, финансово< планирование или составление смет ведется просто в виде множеств файлов Excel (часто связанных между собой). Excel выполняет и роль базы данных, и роль клиентского приложения, и генератора отчетов. В таких ситуациях, конечно, опять-таки вопросы автоматизации стоят очень остро;

r формат файлов Excel удобен не только для вывода информации из базы данных, но и для загрузки введенной вручную информации в базу данных. Часто на предприятиях информация из филиалов, подразделений, от сотрудников и т. п. собирается в формате Excel. В результате со временем возникает вопрос — как автоматизировать процесс загрузки информации из Excel в базу данных;

r по моему опыту, на предприятиях часто возникает потребность в синхронизации информации между файлами Excel и базами данных (или другими файлами Excel, или файлами DBF и т. п.). Например, нужно сделать так. чтобы при занесении пользователем информации в файл Excel она сразу же добавлялась в базу данных.

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

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

По сравнению с программным перемещением по документам Word навигацию по книгам и листам Excel производить намного удобнее, поскольку каждой ячейки есть свой адрес (и даже два адреса— в формате А1 и в формате R1C1). Кроме того, в Excel есть возможность присваивать имена диапазонам ячеек, что также очень удобно.

Иерархия стандартных объектов в Excel немного больше. Если в Word все построено вокруг трех объектов: Application— Document — Range, то есть Excel появляется новый элемент— лист, поэтому главная его иерархия выглядит следующим образом: Application— Workbook (книга)— Worksheet (лист) — Range (диапазон).

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

В Excel встроено несколько фактически внешних приложений, использование • оторых может быть очень удобным. Например, сводная таблица (объект PivotTable)— интегрированный в Excel OLAP-клиент приобретенной Microsoft фирмы Panorama Software, QueryTable— специальный объект для работы с информацией из базы данных, объект Chart— средство работы с диаграммами и т. п.

11.2. Объект Application

Как и в Word, объект Application в Microsoft Excel представляет все приложение Excel и находится на самом верхнем уровне объектной модели Excel. Если вам потребуется вызвать Excel из другого приложения, вам нужно будет создать объект Excel.Application (не забудьте при этом при помощи меню Tools | References добавить ссылку на библиотеку Microsoft Excel 11.0 Object Library). Создание этого объекта может выглядеть так:

Dim oExcel As New Excel.Application

oExcel.Workbooks.Add

oExcel.Visible = True

Точно так же, как и в Word, если вы работаете из уже запущенного Excel, создавать объект Application вам не потребуется. Он будет доступен всегда. Если вы обращаетесь к какому-либо свойству без указания вышестоящего объекта, то редактор Visual Basic в Excel будет считать, что вы обращаетесь к свойству объекта Application. Поэтому эти две строки кода в Excel равноначны:

Application.Workbooks.Add

И

Workbooks.Add

Вообще объекты Application в большинстве приложений Office очень похожи между собой, и к ним применяются те же соображения, что и для объекта Word.Application. Точно так же многие разработчики считают, что удобнее и надежнее работать со скрытым окном Excel, что открывать новый экземпляр Excel удобнее, чем разыскивать уже открытый пользователем. Для того чтобы в окне редактора кода для форм появился объект Application, точно так же необходимо в разделе Declarations кода формы объявить объект Application с ключевым словом WithEvents, например, так:

Public WithEvents App As Excel.Application

В этом случае в окне редактора кода для форм у вас появится новый объект Арр, и вы сможете использовать событийные процедуры объекта Application (рис. 11.1).

Рис. 11.1. В списке объектов появился новый объект Арр со своим набором событий

11.3. Свойства и методы объекта Application

Многие свойства, методы и события объекта Excel.Application совпадают с Word. Application. Однако т. к. здесь информация приводится для справки для тех пользователей, которым трудно читать по-английски, приведу наиболее часто используемые свойства и методы объекта Application в Excel, вне зависимости от того, встречались ли они нам в Word или нет.

Вначале о свойствах объекта Application.

r Свойства с префиксом Active... — возвращают активную ячейку (ту, на которую указывает курсор ввода данных), активную диаграмму, активный лист, активную книгу или активное окно. Все эти свойства доступны толь­ко для чтения. Собственно говоря, использовать их для создания объектов совсем не обязательно — объекты ActiveCell, ActiveSheet и т. п. создаются автоматически во время работы приложения и доступны всегда. Немного отличается свойство ActivePrinter — оно позволяет не только вернуть, но и установить активный принтер.

r Addins — возвращает одноименную коллекцию надстроек (объектов Addin). В отличие от Word, где в большинстве случаев применение надстроек предназначено для профессиональных программистов, в Excel работа с этим объектом имеет практическое значение для многих пользователей. Вместе с Excel поставляется несколько очень полезных надстроек (на графическом экране они доступны через меню Сервис | Надстройки например, Мастер подстановок, Пакет анализа, Поиск решения и т. п При помощи этой коллекции можно проверить, подключена ли пользователем нужная надстройка (если она нужна в вашей программе) и в случае необходимости подключить ее автоматически.

r AutoRecover — возвращает одноименный объект, который позволяет определить параметры автосохранения Excel. Например, чтобы открытые документы Excel автоматически сохранялись каждые 5 минут, можно использовать код:

Application.AutoRecover.Time =5

Время указывается в минутах, можно использовать значения в интервале от 1 до 120. На графическом экране то же самое можно сделать при помощи меню Сервис | Параметры на вкладке Сохранение окна Параметры.

r Calculation — позволяет узнать или настроить режим пересчета рабочей книги (по умолчанию установлен автоматический режим, можно также использовать ручной пересчет или полуавтоматический, когда автоматически пересчитывается все, кроме таблиц). Есть смысл отключать автоматический пересчет тогда, когда пересчет значений после каждого изменения ячейки занимает много времени и мешает вводу данных. То же самое на графическом экране можно настроить при помощи меню Сервис | Параметры, вкладка Вычисления окна Параметры (явно дать команду на пересчет можно клавишей < F9 >).

r CalculationState — позволяет проверить, занимается ли Excel пересчетом данных или пересчет уже завершен.

r Cells — одно из самых важных свойств объекта Application. Оно возвращает объект Range, представляющий собой все ячейки в активном листе активной книги. Поскольку свойство по умолчанию (т. е. свойство, название которого можно опускать) для объекта Range — это свойство Item, то обращение к ячейкам активного листа может выглядеть так:

Application.Cellsd(1, 2).Font.Bold = True

В данном случае мы выделили полужирным ячейку на пересечении первой строки и второго столбца.

Очень похоже действуют свойства Сolumns и Rows. Например, чтобы проделать подобную операцию со всем вторым столбцом, можно использовать команду вида:

Application.Columns(2).Font.Bold = True

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

Application.Rows(2).Font.Bold = True

Еще раз отметим, что свойства Сells, Сolumns и Rows возвращают вовсе не наборы объектов Cell, Column и Row, как считают многие пользователи, а наборы объектов Range. На использовании объекта Range построена в Excel почти вся работа с ячейками и их значениями. Далее в этой главе объект Range будет посвящен отдельный разд. 11.6.

r Cursor — это свойство позволяет поменять внешний вид указателя мыши в Excel (у объекта Application в Word этого свойства почему-то нет). Обычно перед выполнением длинной расчетной операции курсору придают вил песочных часов (xlWait), а потом возвращают обратно. Автоматически по завершению работы макроса курсор не возвращается к нормальному виду, поэтому нужно предусмотреть соответствующий код.

r DataEntryMode — очень интересное свойство, которое может уберечь пользователя от множества ошибок. Оно позволяет перейти в режим ввода данных (data entry mode), когда пользователю разрешается только вводить данные в разблокированные ячейки выбранного диапазона. Всего в вашем распоряжении три варианта: хlOn— включить этот режим, xlStrict — включить и сделать так, чтобы пользователь не мог из него выйти при помощи клавиши <Esc>, xlOff — отключить режим.

r DecimalSeparator и ThousandsSeparator — эти свойства позволяют не полагаться на региональные настройки на компьютере пользователя, а явно назначить символы, которые будут отделять дробную часть числа от целой и тысячи друг от друга. При использовании этих свойств рекомендуется также отключить использование системных установок при помощи свойства UseSystemSeparators:

Application.UseSystemSeparators = False

r Dialogs — возвращает одноименную коллекцию Dialog, которую можно использовать для отображения диалоговых окон Excel (их предусмотрено несколько сотен) и определять реакцию на действия в них пользователей. На этот объект очень похож объект FileDialog, представляющий окна, предназначенные только для работы с файлами (например, окно открытия файла). Работа с ними выглядит точно так же, как в Word.

r DispiayAierts — свойство, про которое мы уже говорили в модуле про Word, но по причине его большой важности повторим еще раз. Это свойство позволяет отключить показ различных предупреждений, которые пользователю обычно в ходе работы приложения показывать не надо (например, подавить предупреждение при закрытии ненужного файла, в котором не были сохранены изменения).

r EnableEvents — позволяет на время отключить события для объекта Application, чтобы они не срабатывали (обычно перед выполнением како­го-то действия — открытия файла, сохранения и т. п.).

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

r FileDialog— позволяет обратиться к диалоговым окнам открытия и сохранения файлов (то же самое можно сделать при помощи более общего свойства Dialogs). Например, чтобы предоставить пользователю выбрать единственный файл в окне открытия и получить полный путь к нему, можно воспользоваться кодом:

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False

Application.FileDialog(msoFileDialogOpen).Show

Debug.Print Application.FileDialog(msoFileDialogOpen).Selectedltems(1)

Похожий пример с возможностью выбора сразу нескольких файлов при­веден в справке по этому свойству.

r FileSearch — это свойство позволяет провести поиск по указанному вами каталогу и вывести результат.

r Interactive — позволяет полностью заблокировать ввод в приложение Excel со стороны пользователя (как клавиатуру, так и мышь). Обычно используется, чтобы пользователь не смог помешать работе приложения, например, сбить выделение. Это свойство можно также использовать, если ввод пользователя производится из другого приложения, взаимодействующего с Excel.

r International и LanguageSettings — работают точно так же, как и в Word.

r LibraryPath— возвращает путь к каталогу, где лежат файлы надстроек Excel с расширением xla. По умолчанию \Office11\ Library.

r MoveAfterReturn— позволяет включить или отключить переход на следующую ячейку после завершения ввода данных и нажатия <Enter> (по умолчанию включен), а свойство MoveAfterReturnDirection позволяет оп­ределить направление перехода. В некоторых ситуациях это может сильно упростить ввод данных пользователем. Например, чтобы переход происходил на ячейку справа, можно использовать команду:

Application.MoveAfterReturnDirection = xlToRight

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

r ODBCErrors и OLEDBErrors — позволяют получить информацию о возник­ших ошибках при подключении к базам данных ODBC и OLE DB соответственно. Они возвращают.одноименные коллекции, которые состоят из объектов ODBCEггог и OLEDBError соответственно, которые и содержат информацию об ошибке.

r OnWindow — это свойство больше похоже на событие. В качестве его значения указывается имя процедуры, которая должна находиться в модуле уровня книги (по умолчанию такой модуль не создается, его нужно создать вручную). Эта процедура будет вызываться всякий раз, когда пользователь переключился в окно Excel (не важно какой книги и какого листа). Вместо этого свойства можно использовать макросы со специальными: именами Auto_Activate и Auto_Deactivate (если вы определили и то, и другое, первой отработает процедура, определенная при помощи свойства OnWindow).

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

r Referencestyle — позволяет переключать режим отображения ячеек между А1 (буквы— столбцы, цифры— строки) и R1C1 (когда и строки, столбцы обозначаются цифрами). На графическом экране это можно сделать через меню Сервис | Параметры на вкладке Общие окна Параметры, установив или сбросив флажок Стиль ссылок R1C1. На практике пользователям ближе стиль вида А1, а программистам, конечно, R1C1. (особенно в тех ситуациях, когда столбцов очень много и приходится использовать столбцы АА, АВ и т. п.). Во многих ситуациях перед выполнением какой-то программной операции бывает удобно вначале перевести, режим отображения в R1C1, а после окончания на радость пользователям вернуть его обратно. Можно этим и не заниматься, а использовать другие способы для отсчета определенного количества столбцов.

r Selection — как несложно догадаться, это свойство возвращает то, что в настоящий момент выбрал пользователь. Если он выбрал обычные ячейки в таблице, то вернется объект Range. Если же пользователь выбрал что-то на диаграмме, то может вернуться объект осей, легенды и т. п., в зависимости от того, что было выбрано.

r Sheets — это свойство мы будем подробнее разбирать в разд. 11.5, посвященном книгам Excel. Оно возвращает коллекцию sheets — набор листе книги и набор диаграмм, которые находятся на отдельных листах. Если используется свойство Worksheets, то вернется та же коллекция Sheets, но уже состоящая только из объектов Worksheet — обычных листов (без диаграмм).

r TempiatesPath — свойство для чтения, при помощи которого можно получить информацию о каталоге с шаблонами Excel (например, для размещения собственного шаблона или открытия шаблона из этого каталога). По умолчанию используется каталог Application Data\Microsoft\Templates в профиле пользователя.

r ThisCeil и ThisWorkbook— очень удобные свойства, которые позволяют обращаться к текущей ячейке и к текущей книге, не обременяя себя созданием объектных переменных. Эти объекты создавать не нужно — они и так изначально существуют в работающем Excel.

r Windows, Workbooks и Sheets — возвращают, соответственно, все открытые окна, книги и листы Excel. Про объекты рабочей книги и листа мы будем говорить в разд. 11.5.

r WorkSheetFunction— позволяет использовать в программе на VBA функции Excel напрямую, без необходимости прописывать их в какую-либо ячейку.

Самые важные методы объекта Excel.Application перечислены далее.

r ActivateMicrosoftApp () — специальный метод, который предназначен для запуска и активизации (или просто активизации, если приложение уже было запущено) приложений Office (Word, Access, PowerPoint) и некоторых других (Project, FoxPro, Schedule Plus).

r AddCustomList() — создает новый пользовательский список. В качестве параметра принимает либо объект Range (элементами списка станут те значения, которые есть в диапазоне), либо стандартный объект Array. Удалить список можно при помощи метода DeleteCustomList().

r Методы с префиксом Сalculate... — позволяют пересчитать значения в ячейках. Простой метод Сalculate() — это обычный пересчет значений (чаще всего нужен, если автопересчет отключен), CaicuiateFull) пересчитывает значения во всех открытых книгах, CalculateFullRebuild() — еще и производит перестроение формул (аналогично занесению всех формул заново). Остановить пересчет можно при помощи метода CheckAbort().

r ConvertFormula() — преобразовывает формулу двумя способами: либо переводит адресацию ячеек в другой режим (например, вместо А1 в R1C1), либо меняет абсолютные ссылки на относительные и наоборот. В качестве параметра принимает, строковую переменную с текстом формулы (должна начинаться с символа '=') и флаги конвертации.

r DoubleСlick() — этот метод эквивалентен двойному щелчку мышью на активной ячейке, т. е. переход в режим ввода данных в эту ячейку.

r Evaluate() — очень полезный и часто используемый метод. Позволяет по имени найти объект книги Excel и преобразовать его в объект или значения для дальнейшего использования. В качестве имен этот метод может принимать:

• имена ячеек в стиле А1 (возвращается объект cell);

• имена диапазонов (возвращается объект Range);

• имена, определенные в макросе (чаще всего названия переменных);

• ссылки на внешние книги, например:

Evaluate("[Bookl.xls]Sheet1!A5"))

Этот метод можно вызвать и неявно, просто заключив имя объекта в квадратные скобки. Например, такие строки будут абсолютно одинаковыми по значению:

[al].Value = 25

Evaluate("Al").Value = 25

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

Таким образом, метод Evaluate о — это самый простой и естественный метод обратиться к ячейке или диапазону в своей или чужой книге Excel.

r GetOpenFilename() — это упрощенный способ работы с окном открытия файлов. Чтобы открыть диалоговое окно и получить информацию о том. что выбрал пользователь (в виде строковой переменной с информацией с



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: