VBA. Лабораторна робота 2




Каркас документа Word

Word - библиотека, задающая основу документов Word. Здесь хранится класс, задающий корневой объект Word.Application, и все классы объектов, вложенных в корневой объект.
Office - библиотека объектов, общих для всех приложений Office 2000. Здесь находятся классы, определяющие инструментальные панели - CommandBar и классы других общих объектов. Здесь же находятся классы, задающие Помощника (объект Assistant и все классы, связанные с ним). В частности, появился новый объект, которого не было в предыдущей версии - Мастер Ответов (Answer Wizard).
Stdole - библиотека классов, позволяющая работать с OLE - объектами и реализовать Автоматизацию.
VBA - библиотека классов, связанных с языком VBA. Здесь хранятся все стандартные функции и константы, встроенные в язык, классы Collection и ErrObject .
Project - проект по умолчанию, связанный с документом. Классы, которые могут программистом создаваться в этом проекте, методы, свойства, - все это доступно для просмотра, так же, как и объекты классов, встроенных в стандартные библиотеки.
Normal - проект, доступный для всех документов Word. Здесь могут храниться функции и классы, используемые всеми документами.

Объект Word.Application
Таблица 1.1. Коллекции объектов, встроенных в корневой объект Word Application

Коллекция
Свойства
Методы

AddIns (AddIn),
Application, Count, Creator, Parent
Add, Item, UnLoad

AutoCaptions (AutoCaption),
Application, Count, Creator, Parent
Item, CancelAutoInsert

CaptionLabels (CaptionLabel),
Application, Count, Creator, Parent
Add, Item

CommandBars (CommandBar),
Application, Count, Creator, Parent (+ 6 дополнительных свойств)
Add, Item, FindControl, ReleaseFocus

Dialogs (Dialog),
Application, Count, Creator, Parent
Item

Dialogs (Dialog),
Application, Count, Creator, Parent
Item

Dictionaries (Dictionary),
Application, Count, Creator, Parent, ActiveCustomDictionary, Maximum
Add, Item, ClearAll

Documents (Document)
Application, Count, Creator, Parent
Add, Open, Item, Close, Save

FileConverters (FileConverter),
Application, Count, Creator, Parent, ConvertMacWordChevrons
Item

KeysBoundTo (KeyBinding),
Application, Count, Creator, Parent, Command, CommandParametr, Context, KeyCategory
Item, Key

KeyBindings (KeyBinding),
Application, Count, Creator, Parent, Context
Add, Item, Key, ClearAll

Languges (Language),
Application, Count, Creator, Parent, Context
Item

ListGalleries (ListGallery),
Application, Count, Creator, Parent, Context
Item

RecentFiles (RecentFile
Application, Count, Creator, Parent, Maximum
Add, Item

SpellingSuggestions (SpellingSuggestion),
Application, Count, Creator, Parent, SpellingErrorType
Item

Tasks (Task),
Application, Count, Creator, Parent
Item, Exists, ExitWindow

Templates (Template),
Application, Count, Creator, Parent
Item

Windows(Window).
Application, Count, Creator, Parent
Add, Item, Arrange

Новые коллекции Office 2000
Свойства
Методы

COMAddIns
Application, Count, Creator, Parent
Item, Update

DefaultWebOptions
BrowserLevel, Encoding, OrganizeInFolder и другие, всего 19 свойств
нет

HangulHanjaConversionDictionaries
ActiveCustomDictionary, Application, BuiltinDictionary, Count, Creator, Maximum, Parent
Add, ClearAll, Item


Таблица 1.2. Объекты, встроенные в Word Application

Объект
Свойства
Методы

Assistant
Application, Creator, Parent + 21 свойство
ActivateWizard, StartWizard, EndWizard, Help, ResetTips, Move

AutoCorrect
Application, Creator, Parent + 3 свойства
Методов нет

Browser
Application, Creator, Parent, Target
Next, Previous

FileSearch
Application, Creator + 10 свойств
Execute, NewSearch

FontNames
Application, Creator, Parent, Count
Item

MailingLabel
Application, Creator, Parent + 4 свойства
CreateNewDocument, PrintOut

MailMessage
Application, Creator, Parent
Delete, Reply, Forward, GotoNext, GotoPrevious + 6 методов

Options
100 различных свойств
SetWPHelpOptions

SetWPHelpOptions
Более 50 свойств
Более 70 методов

System
Application, Creator, Parent + 15 свойств
Connect, MSInfo

SynonymInfo
Application, Creator,Parent + 9 свойств
Методов нет

VBE
18 свойств
Quit

Новые объекты в Office 2000
Свойства
Методы

AnswerWizard
Application, Creator, Files, Parent
ClearFileList, ResetFileList

EmailOptions
EmailSignature, ReplyStyle и другие, всего 10 свойств
нет

LanguageSettings
Application, Creator, LanguageId, LanguagePrefferedForEditing
нет

Public Sub WorkWithBrowser()
'Работа с объектом Browser
Dim myrprev As Range, myrnext As Range, Answer As String
'Поиск нужного заголовка в диалоге с пользователем
'Установить заголовок в качестве цели поиска
Application.Browser.Target = wdBrowseHeading
With ActiveDocument
'Встать в начало документа
.Paragraphs.First.Range.Select
Set myrnext = Selection.Range
Do
Answer = InputBox("Это искомый заголовок? (Да/Нет)", "Заголовки", "Нет")
If Answer = "Да" Then Exit Do
'Передвинуться к следующему заголовку
Application.Browser.Next
Set myrprev = myrnext
Selection.MoveEnd (wdParagraph)
Set myrnext = Selection.Range
Loop Until (myrprev = myrnext)

If Answer = "Нет" Then
MsgBox ("В данном документе нет других заголовков стиля Heading")
End If
End With
End Sub
Public Sub WindowOpenFile()
'Предоставление пользователю возможности открыть любой файл.
'Открывается каталог, хранящий активный документ, с показом всех файлов.
Dim Act As Long
With Dialogs (wdDialogFileOpen)
.Name = ActiveDocument.Path & "\*.*"
Act = . Show
Debug.Print Act
If Act = -1 Then
'Файл успешно открыт и можно получить путь к нему и его имя
Debug.Print Documents(1).Path & "\" & Documents(1).Name
End If
End With
End Sub
Public Sub WorkWithOptions()
'работа с объектом Options
Options.AutoFormatAsYouTypeReplaceFractions = True
Options.AllowDragAndDrop = True
Options.CheckGrammarWithSpelling = True
Options.EnableSound = False
Options.MonthNames = wdMonthNamesEnglish
Options.PrintComments = True
End Sub
The Debug object sends output to the Immediate window at run time.
Public Sub WorkWithSystem()
'Получение характеристик компьютера и окружения
Dim env As System
Set env = Application.System
'Debug.Print "Тип компьютера - ", env.ComputerType
Debug.Print "Тип процессора - ", env.ProcessorType
Debug.Print "Операционная система - ", env.OperatingSystem
Debug.Print "Язык - ", env.LanguageDesignation
Debug.Print "Свободного дискового пространства - ", env.FreeDiskSpace
Debug.Print "Курсор - ", env.Cursor
End Sub
Коллекции объекта Document
Рассмотрим список коллекций, входящих в состав объекта Document:
Bookmarks
Characters (Range)
CommandBars
Comments
DocumentProperties
Endnotes
Fields
Footnotes
FormFields
Frames
Hyperlinks
Indexes
InlineShapes
HorizontalLineFormat
ListParagraphs
Lists
ListParagraphs
Range
ListTemplates
ListLevels
Font
Paragraphs
ProofreadingErrors (Range)
Revisions
ReadabilityStatistics
Scripts
Sections
Sentences (Range)
Shapes
StoryRanges (Range
Styles
Subdocuments
Tables
TablesOfAuthoritiesCategories (TableOfAuthoritiesCategory)
TablesOfAuthorities (TableOfAuthorities)
TablesOfContents (TableOfContents)
TablesOfFigures (TableOfFigures)
Variables
Versions
Windows
Words (Range)
Автомакросы (Auto Macros) - это макросы со специально фиксированными именами. Они вызываются при возникновении ряда событий и являются альтернативным способом их обработки.
AutoExec - при запуске приложения Word;
AutoNew - при создании нового документа;
AutoOpen - при открытии существующего документа
AutoClose - при закрытии документа;
AutoExit - при выходе из приложения
Option Explicit
'Класс EventsOfApp
Public WithEvents AppEv As Word.Application
Private Sub AppEv_DocumentOpen(ByVal Doc As Document)
MsgBox ("Hi " & Doc.Name)
End Sub
Private Sub AppEv_DocumentChange()
Const Msg1 = "Вы переключились на работу с новым документом!"
Call MsgBox(Msg1 & vbCrLf & ActiveDocument.Name, vbInformation, "Окно информации!")
End Sub
Private Sub AppEv_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)
MsgBox ("Вы закрываете документ " & Doc.Name)
DocQuit
End Sub
'Module:
Public App1 As New EventsOfApp
Public Sub OnEvents()
'Определение объекта Word.Application with Events
'Связывание
Set App1.AppEv = Word.Application
'Теперь начинают работать обработчики событий у Word.Application
End Sub
Public Sub DocQuit()
With ActiveDocument
If ExistVar("CounterDoc") Then
MsgBox "Число открытий документа " & .Name & vbCrLf & _
.Variables("CounterDoc"), VBE xclamation, "Число открытий документа!"
Else
MsgBox "У документа " & .Name _
& " нет счетчика числа открытий", VBE xclamation, "Число открытий документа!"
End If
End With
End Sub