- •Программирование в среде Microsoft Office 2000
- •1. Основные сведения о vba
- •1.2. Макрорекордер в Office 2000
- •2.Основные сведения о программировании на vba
- •2.1. Алфавит и лексика языка vba
- •2.2.Правила записи текста программы на vba.
- •2.4. Данные в vba
- •2.4.1. Типы данных в vba
- •Т ипы данных в vba
- •Встроенные типы данных показаны в таблице 2.1.
- •2.4.2.Объявление переменных и констант простых типов
- •2.4.3. Массивы
- •2.5.Использование стандартных диалоговых окон для организации ввода-вывода данных
- •2.5.1.Функция MsgBox
- •2.5.2.Функция InputBox
- •2.6. Управляющие конструкции vba
- •2.6.1.Условный оператор if
- •2.6.2.Оператор выбора Select Case
- •2.6.3.Оператор цикла For … Next
- •2.6.4.Оператор цикла While…Wend
- •2.6.5.Оператор цикла Do…Loop
- •2.6.6. Оператор перехода GoTo
- •2.7. Основные сведения об объектах
- •2.7.1.Основные понятия объектно-ориентированного программирования.
- •2.7.2. Особенности использования объектов.
- •2.7.3. Коллекции в vba
- •2.7.4. Объект Application
- •2.7.5. Объекты Range и Selection
- •2.7.6. Оператор With для операций с одним объектом.
- •2.8.Обработка ошибок
- •3.Программирование в приложениях ms Office 2000.
- •3.1.Объекты excel, их свойства и методы.
- •3.1.1. Объектная модель excel
- •3.1.2. Коллекция Workbooks
- •3.1.3. Объект Workbook
- •3.1.4.Объект Worksheet
- •3.1.5.Объект Chart
- •3.1.6.Объекты Range и Selection
- •3.1.7. Пример решения задачи в excel на основе построения vba-кода.
- •3.2. Объекты word, их свойства и методы.
- •3.2.1. Модель объектов word
- •3.2.2.Объект Appication
- •3.2.3. Объект Document
- •3.2.4. Классы, задающие структуризацию текста документа.
- •3.2.5. Классы, составляющие части документа
- •3.2.5.1. Объект Range
- •3.2.5.2. Объект Selection
- •3.2.6. Классы, представляющие структуру документа
- •3.3. Автоматизация работы в Access на основе использования Access vba
- •3.3.1. Средства автоматизации работы в Access.
- •3.3.2. Объектная модель Microsoft Access
- •3.3.3.Особенности программирования в Access vba
- •3.3.3.1. Модель программирования Access
- •3.3.3.2. Особенности работы с объектами в Access vba.
- •3.3.4. Манипулирование в Access объектами Application
- •3.3.5. Объекты доступа к данным
- •3.3.5.1. Объекты dao
- •3.3.5.2. Объекты ado
- •3.3.6. Использование объектов доступа к данным в Access
- •3.3.6.1. Соединение с текущей базой данных
- •3.3.6.2. Открытие базы данных
- •3.3.6.3. Создание базы данных
- •3.3.6.4. Выполнение операций с записями
- •3.3.6.5. Перемещение по набору записей
- •3.3.6.6. Поиск записей в объектах Recordset
- •3.3.7. Пример решения задачи в Access на основе построения vba-кода
- •3.4.Совместная работа приложений Microsoft Office 2000
- •4.Список рекомендуемой литературы
3.2.5.2. Объект Selection
Объект Selection задает выделенную в документе область (фрагмент).
Выделенный в документе фрагмент задает непрерывную область элементов, но не является диапазоном, заданным своим началом и концом. Выделить можно только один фрагмент, поэтому один объект Selection может быть активен в данный момент времени.
Используя свойства и методы объекта Selection, можно получить и изменить выделенный фрагмент.
Объект Selection может быть получен с помощью свойства Selection или метода Select других объектов.
Свойство Selection возвращает уже существующий объект. Свойством Selection обладают объекты верхнего уровня, по отношению к объекту Selection, такие как Application, Window(окно), Pane(панель). При этом объект Selection ссылается соответственно на выделенный фрагмент активного документа, выделенный фрагмент указанного окна или на выделенный фрагмент секции окна.
В следующем примере процедура осуществляет форматирование символов выделенного фрагмента в активном документе:
Пример 3.12.
Sub slct()
With Selection
.Font.Name = "Arial"
.Font.Size = 16
End With
End Sub
Метод Select позволяет создать новый объект. Этим методом обладают объекты класса Range. Метод Select реализован как процедура:
Sub Select()
Она не имеет параметров и не возвращает объект Selection. Мы не можем получить ссылку на объект Selection и не можем создать переменную этого класса, так как это делали при рассмотрении объекта Range.
Однако после выполнения метода объект Selection создан и все свойства и методы данного класса доступны. Следующий пример иллюстрирует создание объекта Selection, выделяющего заданный диапазон – первый абзац.
Пример 3.13.
Sub sеlct2()
ActiveDocument.Paragraphs(1).Range.Select
With Selection
.Font.Name = "Arial"
.Font.Size = 16
End With
End Sub
Объект Selection является примером косвенной адресации. Он задает некоторую выделенную область и, его свойства и методы позволяют изменять состояние этой области. Это позволяет создавать процедуры, не зависимые от области и использовать их по необходимости.
Пример 3.14.
Sub sеlct2() ActiveDocment._ Paragraphs(1).Range.Select Slct End Sub
|
Sub Selct3() Set aDoc = ActiveDocument Set Rng = aDoc.Range(Start:=_ aDoc.Paragraphs(2).Range.Start, _ End:=aDoc.Paragraphs(5).Range.End) Rng.Select Slct End Sub |
Public sub Slct()
With Selection
.Font.Name = "Arial"
.Font.Size = 16
End With
End sub
Объекты Selection и Range предназначены для одной и той же цели – они задают некоторую область элементов и позволяют выполнять действия над элементами этой области. Возможности для работы с элементами области у них примерно одинаковы, поэтому свойства и методы данных классов объектов почти полностью совпадают.
Рассмотрим некоторые методы присущие объектам Selection и Range при работе с текстом:
Move – метод перемещения точки вставки;
MoveStart, MoveEND – методы изменения значения свойств Start и End;
Collapse – сворачивает диапазон к его началу или концу.
Next – метод получения ссылки на очередной элемент коллекции объектов в диапазоне или выделенном фрагменте;
Delete - удаляет текст входящий в диапазон.
InsertAfter , InsertBefore вставляет текст до или после текста, входящего в диапазон. После вставки текста диапазон расширяется, включая в себя вставленный текст.
Copy – копирует объект в буфер обмена;
Cut - перемещает объект в буфер обмена;
Paste – позволяет поместить содержимое буфера в область, заданную объектом Range или Selection.
Методы Move, MoveStart, MoveEnd позволяют переопределить размеры объекта Selection или Range и имеют одинаковый формат. Рассмотрим его на примере метода Move:
Function Move([Unit], [Count]) As Long, где:
Unit – определяет единицу перемещения. Параметр принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, WdTable;
Count – определяет количество единиц перемещения. Знак перед Count задает направление перемещения («+» - перемещение вперед, «-» - назад.
Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не было выполнено.
В следующем примере показано использование метода MoveEnd для изменения диапазона и выделенного фрагмента.
Пример 3.15.
Public Sub Rang4() With ActiveDocument.Paragraphs(1).Range .InsertBefore Text:="Hello" .MoveEnd unit:=wdParagraph, Count:=2 .Select End With End Sub
|
Public Sub Selct4() With Selection .InsertBefore "Hello" .MoveEnd unit:=wdSentence,_ Count:=1 End With End Sub |
Выполнения методов Delete, InsertAfter, InsertBefore также приводит к переопределению объекта, он сжимается или расширяется в зависимости от выполненных действий.
Следующий пример показывает, как с помощью метода Next осуществляется переопределение диапазона. Объектом Range становиться следующее слово из коллекции Words (элементом коллекции Words является объект Range).
Пример 3.16.
‘ процедура осуществляет замену шрифта Times New Roman на Ariel
Public Sub Rang5()
Dim kol As Byte
kol = ActiveDocument.Words.Count
Set Rng = ActiveDocument.Words(1)
For i = 1 To kol
If Rng.Font.Name = "Times New Roman" Then
Rng.Font.Name = "Ariel"
End If
Set Rng = Rng.Next(Unit:=wdWord, Count:=1)
Next i
End Sub
Нередко при работе с текстом нужно определить пустой диапазон для получения точки вставки. Сделать это можно, либо переопределив диапазон таким образом, чтобы значения свойств Start и End совпадали, либо применив к диапазону метод сжатия – Collapse.
Sub Collapse([Direction]),
где Direction определяет направление сжатия диапазона и принимает значения wdCollapseStart (в начальную точку) и wdCollapseEnd (в конечную точку).
В примере текст второго абзаца заменяется словом Hello, метод Collapse сжимает объект Selection в точку вставки, которая устанавливается в конец абзаца.
Пример 3.17.
Public Sub rang7()
ActiveDocument.Paragraphs(2).Range.Select
Selection.Text = "Hello"
Selection.Collapse direction:=wdCollapseEnd
End Sub
В следующем примере приведена процедура rang8, которая преобразует в активном документе текст заголовков к верхнему регистру. Если текст диапазона – слово соответствует форматам стиля «Заголовок 1», то происходит замена текста диапазона – прописные буквы заменяются строчными.
Пример 3.18.
Public Sub rang8()
Dim kol As Byte
Dim C_m, C_b, str, res As String
C_m = "йцукенгшщзхъфывапролджэячсмитьбю"
C_b = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"
kol = ActiveDocument.Words.Count
Set rng = ActiveDocument.Words(1)
For k = 1 To kol
If rng.Font.Name="Arial" And rng.Font.Size=14 And rng.Bold=True Then
str = rng.Text: res = ""
For i = 1 To Len(str)
If InStr(C_m, Mid$(str, i, 1)) > 0 Then
res = res + Mid$(C_b, InStr(C_m, Mid$(str, i, 1)), 1)
Else
res = res + Mid$(str, i, 1)
End If
Next i
rng.Text = res
rng.Style = wdStyleHeading1
End If
Set rng = rng.Next(unit:=wdWord, Count:=1)
Next k
End Sub