Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурные особенности Visual Basic.docx
Скачиваний:
44
Добавлен:
17.11.2019
Размер:
2.86 Mб
Скачать

30. Примеры процедур на определение списка всех панелей инструментов и тем главного меню ms Word.

если из окна Ms Word открыть окно VBA (ALT+F11, Сервис\ Макрос\Редактор VB), сформировать окно кода модуля (Insert\Module), записать в нем, а затем запустить

(F5,Run\Run Sub) на выполнение следующий макрос, то вы получите в окне Immediate полный список всех панелей инструментов и меню MS Word

Sub Menu Bars()

Dim nBar As CommandBar,s As String,i As Long

s=1 & vbTab & _

Application.CommandBars.ActiveMenuBar.Name & vbCrLf

i=2

For Each mBar In CommandBars

s=s & i & vbTab & mBar.Name & vbCrLf

i=i+1

Next

Debug.Print s Вывод осущ-ся в окно Immediate

End Sub

если в том же окне модуля VBA MS Word записать, а затем запустить на выполнение следующий макрос, то вы получите в окне MsgBox полный список тем главного меню

Sub MainMenuCommand()

c=Application.CommandBars.ActiveMenuBar.Controls._Count

For i=1 To c

s=s & Application.CommandBars.ActiveMenuBar._Controls(i).Caption & vbCrLf

Next

MsgBox s End Sub

32. Свойства и методы объектов Options, Dialogs, Selection и Range объектной модели ms Word.

Основной частью документа Word является, конечно, текст этого документа. Уже было сказано, как структурирован текст документа, рассмотрены коллекции - Characters, Words, Sentences, Paragraphs, которые позволяют работать с символами, словами, предложениями и абзацами текста. Говорил я также и о том, что только этими коллекциями не обойтись, и необходим общий класс объектов, позволяющий задать произвольную область текста. Таковыми являются два важных класса Range и Selection. Объекты этих классов широко используются при работе с текстом. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свойство Range, возвращающие в качестве результат объект Range. Каждый объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом - комментарии, ссылки и прочее. Так, если некоторый объект вызвал метод Range, то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод. Объект Selection представляет выделенную область. Поскольку в каждом окне может быть только одна выделенная область, то одновременно может существовать лишь несколько объектов Selection по одному на каждое существующее окно или подокно. Заметим также, что, объект Selection всегда существует в окне, даже если и не сделано явного выделения некоторой области, в последнем случае объект Selection задает точку вставки, определенную позицией курсора. Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection. Метод Range - это функция, возвращающая в качестве результата объект Range; метод Select - это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Заметьте существенную разницу между методами Range и Selection. В первом случае возвращается сам объект и поэтому можно запомнить возвращаемый объект и в программе одновременно работать с несколькими такими объектами. В случае вызова метода Selection объект не возвращается, следовательно, запомнить его нельзя, что и гарантирует уникальность объекта Selection. Объект Range имеет метод Select, выделяющий область объекта Range, и определяющий, тем самым, новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объект Range, соответствующий выделенной области. Объекты Range и Selection столь же многообразны по своей структуре, как и объект Document. И даже большинство свойств у этих трех объектов одни и те же. Эти три объекта являются схожими. Это понятно, так как большинство частей документа: предложения, абзацы, разделы, таблицы, рисунки, комментарии, ссылки и многое другое - может составлять любую подобласть документа, в том числе и выделенную подобласть. Значит, большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection. Это приятно - ведь с большинством свойств этих объектов мы уже знакомы!

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range: