VBA. Лабораторна робота 3
Копирование текста
'Текстовый буфер задается обычной строкой
Public TextBuffer As String
Public Sub CopyText()
'Этот макрос копирует выделенный текст в буфер
TextBuffer = Selection.Text
End Sub
Public Sub PasteText()
'Этот макрос выполняет операцию, обратную копированию
'Текст из буфера вставляется в точку, заданную курсором
Selection.Text = TextBuffer
End Sub
Копирование текста и шрифта
'Буфер, сохраняющий текст и шрифт
Public Type TextAndFont
BufText As String
BufFont As Font
End Type
Public TaFBuffer As TextAndFont
Public Sub CopyTextAndFont()
'Этот макрос копирует выделенный текст и шрифт в буфер
Set TaFBuffer.BufFont = Selection.Font
TaFBuffer.BufText = Selection.Text
End Sub
Public Sub PasteTextAndFont()
'Этот макрос выполняет операцию, обратную копированию

Selection.Font.Name = TaFBuffer.BufFont.Name
Selection.Font.Bold = TaFBuffer.BufFont.Bold
Selection.Font.Italic = TaFBuffer.BufFont.Italic
Selection.Font.Size = TaFBuffer.BufFont.Size
'Текст из буфера с указанными параметрами шрифта
'вставляется в точку, заданную курсором.
Selection.Text = TaFBuffer.BufText
End Sub
Копирование объекта
'Буфер, позволяющий сохранять объект
Public ObjectBuffer As Range
Public Sub CopyObject()
'Этот макрос копирует выделенный объект в буфер
Set ObjectBuffer = Selection.Range
End Sub
Public Sub PasteObject()
'используется техника копирования через стандартный буфер!
ObjectBuffer.Copy
Selection.PasteSpecial

End Sub
Коллекции объекта 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)
‘заголовок окна Word задается свойством Caption этого объекта
Application.Caption = “My caption ”
Application.ActiveWindow.WindowState = wdWindowStateMaximize
Application.ActiveDocument.Save
MsgBox Application.ActivePrinter
Application.CommandBars.LargeButtons = True
Application.DisplayScrollBars = False
Application.DisplayStatusBar = False
Application.Options.AllowDragAndDrop = True
Application.Options.SaveInterval = 10
Application.StatusBar = "Run macros, please wait..."
Application.Quit wdSaveChanges
Dim MyDoc As Document
Set MyDoc = Documents.Add("C:\MSOffice\Templates\My.dot")
Set MyDoc = Documents.Open("C:\My documents\MyDoc1.doc")
Documents(“Документ1”).Close
Documents(4).Activate
ActiveDocument.PrintOut
Options.SendMailAttach = True
ThisDocument.SendMail
Documents.Close wdPromptToSaveChanges
ActiveDocument.Close wdDoNotSaveChanges
ActiveDocument.Save
ActiveDocument.SaveAs "C:\Мои документы\MyDoc2.doc"
Операції із виділеним текстом
ActiveDocument.Range(Start:=0, End:=9).Bold = True
ActiveDocument.Range(Start:=0, End:=0).InsertBefore "АБВГД"
Перевірка правопису
If Not CheckSpelling(ActiveDocument.Sections(1).Range) Then
MsgBox "Обнаружена ошибка!"
End If
Встановлення верхнього колонтитула
ActiveDocument.Sections(2).Headers(wdHeaderFooterFirstPage).Range = “Глава 2”
Paragraphs, Sentences, Words та Characters
Семейство Paragraphs представляет все абзацы документа, семейство Sentences — все
предложения, в семействе Words содержатся слова, а в семействе Characters — символы до-
кумента. Все эти семейства устроены одинаковым образом.
Властивості First і Last
К их членам можно обращаться по номерам, свойства First и Last указывают на, соответст-
венно, первый и последний элементы.
Властивість Count
Свойстве Count содержится число элементов в семействе. И для всех этих семейств в любом
случае в результате возвращается объект типа Range.
Alignment
Задать выравнивание по правому краю для первого абзаца:
ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphRight
Створити навколо абзацу рамку заданого стилю
Заключить первый абзац в рамку стиля 3D:
ActiveDocument.Paragraphs.First.Borders.OutsideLineStyle = wdLineSyleEmboss3D
Вставить текст после последнего абзаца:
ActiveDocument.Paragraphs.Last.Range.InsertAfter "Конец."
Зміна фона абзацу
Задать для пятого абзаца штриховку (узор) 15%:
ActiveDocument.Paragraphs(5).Shading.Texture = wdTexture15Percent
Зміна стиля абзаца
Задать стиль 1-го абзаца Заголовок 1:
ActiveDocument.Paragraphs.First.Style = "Заголовок 1"
Выбрать для первого предложения шрифт Arial:
ActiveDocument.Sentences(1).Font.Name = "Arial"
Переміщення по тексту
Задать смещение вверх на три пункта для символов первого предложения и вниз на три пункта для второго:
ActiveDocument.Sentences(1).Font.Position = 3
ActiveDocument.Sentences(2).Font.Position = - 3
Метод Delete
Удалить последнее предложение:
ActiveDocument.Sentences.Last.Delete
Перетворення символів у верхеій регістр
Преобразовать символы первого предложения в верхний регистр:
ActiveDocument.Sentences(1).Case = wdUpperCase
Выделить первое слово полужирным начертанием:
ActiveDocument.Words.First.Bold = True
StoryRanges
Семейство StoryRanges также возвращает Range-объект, — оно обеспечивает доступ к различным структурным компонентам текста, таким, как основной текст, примечания, сноски, колонтитулы и др. Выбор нужного компонента осуществляется посредством соответствующей константы. Например, задать шрифт Arial для основного текста документа (не затронув при этом все остальное, как случилось бы при обращении к свойству ActiveDocument.Range), можно при помощи следующего кода:
ActiveDocument.StoryRanges(wdMainTextStory).Font.Name = "Arial"
Выделить полужирным нижний колонтитул 1-й страницы:
ActiveDocument.StoryRanges(wdFirstPageFooterStory).Bold = True
Списки та таблиці.
Word-таблиці
Таблицы в документе Word представлены объектами типа Table, доступными через семейство Tables. Каждая таблица — объект Table — состоит из строк (объекты типа Row, объединенные в семейство Rows) и столбцов (объекты типа Column, объединенные в семейство Rows). Кроме того, таблицу можно рассматривать, как набор ячеек (объектов типа Cell, объединенных в семейство Cells).
Управління границями таблиць
Разрешить отображение границ для первой таблицы документа:
ActiveDocument.Tables(1).Borders.Enable = True
Видалення стовпчика таблиці
Удалить первый столбец в первой таблице:
ActiveDocument.Tables(1).Columns(1).Delete
Зміна фона таблиці
Выделить первую строку первой таблицы штриховкой 15%:
ActiveDocument.Tables(1).Rows(1).Shading.Texture = wdTexture15Percent
Створення таблиці
Создать новую таблицу с заданными параметрами и заменить ею фрагмент, определенный вы-
деленной в документе областью (объект Selection):
ActiveDocument.Tables.Add Selection.Range, 4, 3
Автоформат таблиці
Отформатировать таблицу с применением автоформата Ñïèñîê1:
ActiveDocument.Tables(1).AutoFormat wdTableFormatList1
Запис в комірки таблиці данних
К ячейкам таблицы можно обращаться по номеру строки и столбца, при этом содержимое
ячейки представлено Range-объектом. Например, записать в ячейку первого столбца и первой
строки строку “Первая ячейка” можно при помощи следующего кода:
ActiveDocument.Tables(1).Cell(1, 1).Range = "Первая ячейка"
Зміна ширини стовпчиків таблиці
Задать для всех столбцов первой таблицы ширину, равную 33 пунктам:
For N = 1 To ActiveDocument.Tables(1).Columns.Count
ActiveDocument.Tables(1).Columns(N).Width = 33
Next N
Выровнять все столбцы по ширине:
ActiveDocument.Tables(1).Columns.DistributeWidth
Вирівнювання текста в таблиці
Задать для первой строки выравнивание текста по центру:
ActiveDocument.Tables(1).Rows(1).Alignment = wdAlignRowCenter
Додавання заголовків таблиці
Сделать первую строку заглавной:
ActiveDocument.Tables(1).Rows(1).HeadingFormat = True
Автосумування комірок таблиці
Вставить в ячейку (2, 3) поле автосуммирования, которое будет отображать сумму значений в
ячейках выше или левее:
ActiveDocument.Tables(1).Cell(2, 3).AutoSum
Розбиття комірок таблиці
Разбить ячейку (2, 3) на 4 ячейки:
ActiveDocument.Tables(1).Cell(2, 3).Split 2, 2
Word-списки
Списки в документе Word устроены несколько иным образом. Такого объекта, как список, не
существует. Абзацы, составляющие список, являются обычными абзацами документа, и когда
речь идет о списке, то имеется в виду форматирование ряда абзацев.
Об’єкт ListFormat
Форматирование для каждого абзаца списка определяется объектом ListFormat, который
доступен в качестве свойства текстового диапазона.
Чтобы отформатировать некоторый фрагмент текста, как список, необходимо, прежде всего,
определить Range-объект, заключающий в себе этот диапазон. Например, для того чтобы отфор-
матировать как список абзацы с 5-го по 10-й,