Documents включает в себя открытые документы с их полезными методами и свойствами. Наряду с Document, которые входят в ActiveDocument,
ActiveDocument имеет те же свойства и методы, что и любой Document - ActiveDocument удобнее пользоваться.
Так же обратите внимание на объект ThisDocument. Он представляет собой тот документ, из которого запущен макрос.
Для начала давайте рассмотрим свойства и методы Document.
Этот метод добавляет новый Document в Documents - то есть создает новый документ. Его можно использовать так (листинг 10.1.):
Documents.Add
При выполнении такого кода будет создан новый пустой документ на основе шаблона Normal. Чтобы ссылка на созданный документ была присвоена переменной, можете воспользоваться такой конструкцией (листинг 10.2.):
Dim obj_NewDoc As Word.Document
Set obj_NewDoc = Application.Documents.Add
Здесь мы сначала объявили переменную соответствующего типа, а потом присвоили ей ссылку на новый документ.
Метод Add может принимать несколько необязательных параметров. Полный вызов метода выглядит так:
Documents.Add (Template, NewTemplate, DocumentType, Visible)
Template (Шаблон) - отвечает за шаблон, который будет использован при создании файла. По умолчанию это Normal.dotm.
NewTemplate (Новый шаблон) - если этот параметр установлен в True - файл будет обрабатываться как шаблон. По умолчанию установлен в False.
DocumentType (Тип документа) - очень полезный параметр, который позволяет создавать документы различных типов. На тип документа указывает одна из констант, в частности, по умолчанию это wdNewBlankDocument - то есть пустой документ. Так же этот параметр может принимать значения wdNewEmailMessage (Почтовое сообщение), wdNewFrameset (Документ с рамками - такие используются при создании WEB-страниц), wdNewWebPage (WEB-страница).
Visible (Видимость) - по умолчанию установлен в True - то есть создаваемый документ видим для пользователя. Если вы хотите, сначала сформировать новый документ, а уже потом показать его пользователю - установите это свойство в False, а после окончания формирования документа - воспользуйтесь свойством Visible созданного документа, чтобы отобразить его.
Метод Open используется для открытия существующих файлов, возвращая объект типа Document. Файл, имя которого задано при вызове метода, открывается и добавляется в Documents. Метод может принимать множество параметров, однако основной - это FileName, который и задает имя открываемого файла.
Например, для открытия файла 1.docm, расположенного в корневом каталоги диска С, можно воспользоваться кодом из листинга 10.3.
Documents.Open FileName:="C:\1.docm"
Метод Close используется для закрытия всех открытых документов. Применяют его достаточно редко - удобнее закрывать каждый конкретный документ по отдельности. При вызове метода без параметров система задаст вопрос о сохранении документов, которые были изменены (листинг 10.4.).
Documents.Close
Полный вызов метода выглядит так:
Documents.Close(SaveChanges, OriginalFormat, RouteDocument)
Среди параметров для нас наибольший интерес представляют первых два.
SaveChanges (Сохранить изменения) отвечает за сохранение изменений. По умолчанию он установлен в wdPromptToSaveChanges (Вывести запрос о сохранении), так же он может быть установлен в wdDoNotSaveChanges (Не сохранять изменения) и wdSaveChanges (Сохранить изменения). Как видите, с помощью параметра wdSaveChanges можно организовать удобное и быстрое закрытие множества документов с сохранением изменений
OriginalFormat (Формат) - отвечает за формат сохраняемого документа. Может принимать различные значения: wdOriginalDocumentFormat (Оригинальный формат документа), wdPromptUser (Запросить формат у пользователя), wdWordDocument (Документ Word).
Вот как выглядит вызов метода Close, который сохраняет все открытые документы и закрывает их (листинг 10.5.)
Documents.Close (wdSaveChanges)
Учтите - если какие-то из документов сохраняются в первый раз - вы получите запрос об имени документа.
10-01-Item.docm - пример к п. 10.2.4.
Метод Item позволяет обращаться к открытым документам (то есть - к объектам Document ), используя их индексы или имена. Нумерация документов начинается с единицы. Чтобы узнать общее количество открытых документов, можно воспользоваться свойством Documents.Count.
Например, с помощью нижеприведенного кода из листинга 10.6 мы поочередно выводим имена открытых документов с указанием номера документа в
For i = 1 To Documents.Count
MsgBox (Documents.Item(i).Name _
" - документ номер " i)
Next i
Очевидно, что свойство Count Documents позволяет узнать количество открытых документов, а свойство Name объекта Item(i) содержит имя документа с индексом i.
На рис. 10.1 вы можете видеть одно из окон с сообщением об имени и номере документа.
(рис 10.1) Окно сообщения об имени и номере документаК документам в Documents можно обращаться и по именам. Также, при обращении к документу необязательно напрямую указывать метод Item - в листинге 10.7 вы можете видеть различные варианты обращения к документу.
MsgBox Documents("Мой документ.docx").Name
MsgBox Documents.Item("Мой документ.docx").Name
MsgBox Documents(1).Name
Метод Save сохраняет все документы
Documents.Save
Среди свойств Documents нас будет интересовать лишь одно - Count. Это свойство позволяет узнать количество элементов в Documents, то есть - количество открытых документов. В листинге 10.9 мы выводим в окне сообщения количество открытых документов
MsgBox ("Количество открытых документов: " _
Documents.Count)
Объект Document - это открытый документ. У него есть множество свойств и методов, которые активно используются при программной работе с документами. Здесь мы рассмотрим важнейшие из них.
Позволяет сделать документ активным. Например, это может понадобиться для редактирования документа.
Например, код из листинга 10.10 активирует первый документ среди открытых документов.
Dim obj_Doc As Document Set obj_Doc = Documents.Item(1) obj_Doc.Activate
Метод Close закрывает документ. Например, код из листинга 10.11 позволяет закрыть документ, из которого он запущен.
ThisDocument.Close
Метод можно вызывать с параметрами. В частности, полезен параметр SaveChanges, предназначенный для настройки автоматического сохранения документа. Если присвоить ему значение wdSaveChanges - документ будет сохранен при закрытии. Например, код из листинга 10.12 по очереди закрывает каждый из открытых документов.
Dim obj_Doc As Document
For Each obj_Doc In Documents
obj_Doc.Close SaveChanges:=wdSaveChanges
Next
При закрытии документов, которые были открыты и изменены, система выведет запрос о сохранении изменений.
10-02-Статистика документа.docm - пример к п. 10.5.3
Полезный метод, позволяющий получать различные статистические сведения о документе. Полный вызов выглядит так:
ComputeStatistics(
Параметр позволяет задавать тип получаемой статистики. Он может принимать значения типа wdStatistic - константы, описание которых приведено ниже:
wdStatisticCharacters -количество символов без пробеловwdStatisticCharactersWithSliaces - количество символов, включая пробелыwdStatisticLines - количество строкwdStatisticPages - количество страницwdStatisticParagraphs - количество абзацевwdStatisticWords - количество словПараметр IncludeFootnotesAndEndnotes позволяет указать, учитывать ли при подсчете статистики сноски. Установленный в значение True, включает сноски в подсчет статистики, в False - исключает.
Чтобы подсчитать и вывести количество символов в документе без учета пробелов и с учетом сносок, нам понадобится код, приведенный в листинге 10.13.
Dim num_Stat
num_Stat = ActiveDocument.ComputeStatistics _
(wdStatisticCharacters, True)
MsgBox ("В документе " + Str(num_Stat) + _
" символов без пробелов, включая сноски")
Этот метод уменьшает размер документа на одну страницу - его удобно использовать, чтобы избавиться от страницы документа, на которой есть лишь несколько строчек.
10-03-GoTo.docm - пример к п. 10.5.5.
Метод GoTo позволяет перемещаться по документу, "передвигать" позицию редактирования. Метод возвращает объект Range, который представляет собой место документа, на которое должен быть осуществлен переход. Его полный вызов выглядит так:
GoTo(What, Which, Count, Name)
What - тип части документа, на которую осуществляется переход. Например, среди них есть такие элементы:
wdGoToBookmark - закладка (пожалуй, наиболее полезный элемент)wdGoToHeading - заголовокwdGoToLine - строкаwdGoToObject - объектwdGoToPage - страницаWhich - направление перемещения.
wdGoToAbsolute - перемещение в абсолютных единицах измеренияwdGoToFirst - перемещение к первому элементуwdGoToLast -перемещение к последнему элементуwdGoToNext - переход на следующий элементwdGoToPrevious - переход на предыдущий элементwdGoToRelative - перемещение относительно текущего элементаCount - номер элемента в документе. Этот параметр часто опускают, так как переход осуществляется с использованием других установок, в частности - параметра Which.
Name - имя элемента, на который осуществляется переход. Например, имя может быть у закладки.
С помощью листинга 10.14. мы можем перейти к первому заголовку в файле и добавить в его начало слово "Глава"
Dim obj_Range As Range Set obj_Range = Application.Documents. _ Item(1).GoTo(wdGoToHeading, wdGoToFirst) obj_Range.Text = "Глава " + obj_Range.Text
Возвращает объект Range, заданный позицией начального и конечного символа. Подробнее о нем мы поговорим в соответствующей лекции.
Эти методы позволяют отменить последнее изменение ( ) и вернуть отмененное изменение ( Undo ).
Позволяет удалить из документа различную персональную информацию. Например - данные о создателе документа и т.д. Метод может принимать параметр, который определяет, что именно следует удалять. На практике самым полезным является параметр .
Сохраняет документ. Обычно применяют без параметров, хотя полезен может быть параметр NoPrompt. Установленный в True, предписывает MS Word сохранять файл без дополнительных вопросов пользователю.
Обычно для сохранения файлов с определенными параметрами используют метод SaveAs.
Позволяет сохранить документ с новым именем или в новом формате. Обычно именно этот метод применяют и для первого сохранения новых документов, так как он позволяет очень тонко управлять параметрами сохранения. Всего этот метод принимает 16 параметров. Наиболее полезны среди них следующие:
FileName - задает имя файла
FileFormat - формат файла. Здесь могут быть использованы значения из перечисления wdSaveFormat. В частности, для сохранения документа в формате по умолчанию (.docx) надо использовать wdFormatDocumentDefault. Для сохранения документа в формате Word 97 - wdFormatDocument97, для получения HTML-файла - wdFormatHTML.
Выделяет все содержимое документа. После этого с документом можно работать, используя средства объекта Selection.
Очищает историю изменений документа. После выполнения этого метода пользователь не сможет отменить изменения документа.
Это свойство позволяет получить объект приложения документа. Вы можете подумать, что это - ошибка, что, наоборот, объект документа содержится в объекте приложения. Однако, ошибки нет. Это свойство позволяет обращаться к приложению тогда, когда у нас нет ссылки на него, а есть лишь ссылка на документ. Например, код в листинге 10.15 позволяет скрыть окно Microsoft Word вместе с окном документа, используя свойство Visible объекта Application.
ThisDocument.Application.Visible = False
Свойство AttachedTemplate позволяет узнать, какой шаблон присоединен к документу, а так же - изменить этот шаблон на другой. Это очень полезное свойство - ведь шаблоны могут содержать множество нужных макросов, стилей и т.д., а с помощью AttachedTemplate можно удобно управлять ими.
Например, такой листинг 10.16. позволяет вывести имя присоединенного шаблона и путь к нему:
Dim obj_Templ As Template
Set obj_Templ = ActiveDocument.AttachedTemplate
MsgBox ("Имя шаблона: " obj_Templ.Name _
", путь к шаблону: " obj_Templ.Path)
Здесь мы сначала объявили новую переменную типа Template, потом присвоили ей ссылку на шаблон, присоединенный к активному документу, а потом воспользовались свойствами Name и Path шаблона, чтобы вывести информацию о нем.
Листинг 10.17 позволяет присоединить к документу шаблон MyTemplate.dotm, расположенный на диске C.
ActiveDocument.AttachedTemplate = "C:\MyTemplate.dotm"
Возвращает коллекцию , которая содержит все закладки в документе. Закладки позволяют удобно организовать навигацию по документу, особенно удобно с их помощью автоматизировать создание новых документов на основе шаблонов. Подробнее о закладках мы поговорим ниже.
10-04-Символы.docm - пример к п. 10.6.4.
Все эти свойства возвращают объекты, предназначенные для работы с различными частями документа.
Characters (Символы) - возвращает одноименную коллекцию, каждый объект которой представляет собой отдельный символ в документе. Каждый объект коллекции Characters представляет собой диапазон ( Range ), содержащий один символWords (Слова) - то же самое, но уже для слов.Sentences (Предложения) - то же самое для предложений.Paragraphs (Абзацы) - коллекция абзацев документа.Hyperlinks - гиперссылки. При добавлении гиперссылки обратите внимание на то, что метод Add использует объект привязки гиперссылки - Anchor (Якорь) - им может быть, например, графический или текстовый элемент.Indexes - индексы.InlineShapes, Shapes - фигуры, графические элементыLists - списки.OMaths - формулы.Sections - разделы.Tables - таблицы.Работа со всеми этими коллекциями схожа. Давайте рассмотрим ее на примере коллекции Characters, которую, как уже было сказано, можно использовать для работы с отдельными символами документа. Работу с некоторыми другими коллекциями мы рассмотрим ниже.
MsgBox ("Количество символов: " _
ActiveDocument.Characters.Count)
С помощью метода Item коллекции, мы можем получить доступ к каждому символу документа. Например, с помощью этого метода можно проводить различные статистические подсчеты. листинг 10.19. позволяет узнать, сколько раз в документе использована буква "ф" в верхнем и нижнем регистре.
Dim var_Fcount
var_Fcount = 0
For i = 1 To ActiveDocument.Characters.Count
If ActiveDocument.Characters.Item(i) = "ф" Or _
ActiveDocument.Characters.Item(i) = "Ф" Then _
var_Fcount = var_Fcount + 1
Next i
MsgBox ("Количество букв 'Ф' в документе: " _
var_Fcount)
Листинг 10.20 позволяет заменить букву "ё" в верхнем и нижнем регистре на "е".
Dim obj_D As Document
Set obj_D = ActiveDocument
For i = 1 To obj_D.Characters.Count
If obj_D.Characters.Item(i) = "ё" _
Then obj_D.Characters.Item(i) = "е"
If obj_D.Characters.Item(i) = "Ё" _
Then obj_D.Characters.Item(i) = "Е"
Next i
В листинге 10.21 вы можете найти программу, которая "переворачивает" весь текст в документе - меняет последний символ с первым, второй - с предпоследним и так далее.
Dim obj_D As Document
Dim str_Chr As String
Dim var_Count As Variant
Set obj_D = Documents.Add
obj_D.Range.Text = "Привет!"
var_Count = obj_D.Characters.Count
For i = 1 To var_Count \ 2
str_Chr = obj_D.Characters.Item(i)
obj_D.Characters.Item(i) = _
obj_D.Characters.Item(var_Count - i + 1)
obj_D.Characters.Item(var_Count - i + 1) = _
str_Chr
Next i
Здесь мы сначала заводим переменную для хранения ссылки на активный документ, далее - строковую переменную для временного хранения одного символа и переменную типа Variant, в которой будем хранить количество символов в документе.
Далее создаем новый документ и добавляем в него текст "Привет" с помощью свойства Text объекта Range. Именно этот текст мы и будем переворачивать.
Итак, мы используем цикл длительностью, равной количеству символов в документе, деленному на 2, причем обратите внимание на оператор деления. Это - целочисленное деление, то есть для четного числа символов в обмене будут участвовать все символы, а для нечетного - один, "центральный" символ останется на своем месте.
В цикле мы сначала присваиваем i -й символ переменной, потом присваиваем i -му символу противоположный ему символ, а в конце - противоположному символу - символ, хранящийся в переменной. Обратите внимание на алгоритм расчета противоположного символа. Var_Count - i + 1 дает нам последний символ при i = 1, то есть - для первого символа и т.д. В этом несложно убедиться путем расчетов. Например, если в тексте 10 символов, то для обмена с первым символом ( i = 1) мы получим последний символ (10-1+1=10), для второго ( i =2) - девятый (10-2+1=9) и т.д.
10-05-Content.docm - пример к п. 10.6.5.
Свойство документа Content возвращает объект Range - текст документа без сносок, колонтитулов и т.д.
В листинге 10.22 вы можете найти пример использования свойства Content для настройки шрифта документа.
Dim obj_C As Range
Set obj_C = ActiveDocument.Content
With obj_C.Font
.Name = "Arial"
.Size = 12
.Spacing = 1.5
End With
В этом коде мы объявили Range, связали с ней объект Range, возвращаемый свойством Content активного документа, после чего, воспользовавшись свойством Font объекта Range, установили гарнитуру ( Name ) шрифта Arial, размер ( Size ) - 12 пунктов и расстояние между символами в 1.5 пункта.
Чтобы записать текст документа в строковую переменную, можно воспользоваться кодом листинга 10.23.
Dim str_Text As String
str_Text = ActiveDocument.Content.Text
Cвойство Text объекта Range возвращает текст объекта. Записав текст в переменную, мы сможем работать с ней средствами
10-06-Сноски.docm - пример к п. 10.6.6.
Эти свойства возвращают, соответственно, коллекцию и . В коллекции находятся объекты - то есть концевые ссылки - ссылки, которые расположены в конце документа. В коллекции расположены объекты - обычные ссылки, которые расположены в конце страницы.
Давайте рассмотрим работу с этими объектами на примере . Работа с аналогична работе с .
Добавить в документ новую ссылку можно с помощью метода Add коллекции .
Полный вызов метода Add выглядит так:
ActiveDocument.Footnotes .Add(Range, Reference, Text)Range - область текста, для которой вставляется сноска.Reference - определяет символ сноски. По умолчанию используется автоматическая нумерация сносок.Text - текст сноски.В листинге 10.24. вы можете видеть код, добавляющий сноску для выделенного фрагмента текста (как правило, выделяют слово):
ActiveDocument.Footnotes.Add _
Range:=Selection.Range, _
Text:="Новая сноска!"
Свойство Count коллекции позволяет узнать количество ссылок в документе.
Чтобы обращаться к отдельным сноскам (объектам ), можно пользоваться либо их индексами в коллекции , либо - оператором For Each - Next.
Свойство Range каждого объекта возвращает ссылку на объект Range, представляющий собой диапазон, который сноска занимает в документе. С помощью методов объекта можно настраивать различные параметры сноски.
Свойство Reference возвращает объект типа Range, который представляет собой область, занимаемую значком-ссылкой на сноску в
В листинге 10.25 приведен пример форматирования сносок и ссылок на них.
Dim obj_D As Document
Dim obj_Footnote As Footnote
Set obj_D = ActiveDocument
'Форматируем сноски
For Each obj_Footnote In obj_D.Footnotes
obj_Footnote.Range.Font.Size = 11
Next
'Форматируем знаки-ссылки на сноски
For i = 1 To obj_D.Footnotes.Count
obj_D.Footnotes.Item(i).Reference _
.Font.Color = wdColorRed
Next i
Сначала мы, с помощью конструкции For-Each перебираем все сноски и устанавливаем размер шрифта для каждой из них равным 11 пунктов.
Далее, с помощью цикла For-Next мы обходим все ссылки на сноски в тексте и делаем цвет их шрифта красным.
Чтобы удалить сноску, можно воспользоваться методом Delete объекта .
Узнать номер сноски в коллекции можно, используя свойство Index. Например, код листинга 10.26 позволяет вывести поочередно все сноски с их номерами в окне сообщения.
Dim obj_D As Document
Dim obj_Footnote As Footnote
Set obj_D = ActiveDocument
'Выводим информацию о сносках
For Each obj_Footnote In obj_D.Footnotes
MsgBox ("Номер сноски: " obj_Footnote.Index _
vbCrLf "Текст сноски: " obj_Footnote.Range.Text)
Next
Константа vbCrLf заменяет собой знак перевода строки, в итоге при выполнении этого кода для каждой сноски будет выведено такое окно (рис. 10.2.).
(рис 10.2) Информация о сносках
Свойство FullName возвращает строку, содержащую полное имя документа - то есть полный путь к документу и его имя.
MsgBox (ActiveDocument.FullName)
Свойство Name возвращает имя документа без пути, а Path - путь без имени.
Возвращает True если документ не изменялся после последнего сохранения.
10-07-Таблицы.docm - пример к п. 10.6.9.
Свойство возвращает коллекцию Tables (Таблицы), которая содержит объекты Table - таблицы, которые имеются в документе. Работа с таблицами похожа на работу с другими объектами документов.
Например, чтобы добавить в документ новую таблицу, нужно воспользоваться методом Add коллекции Tables. Рассмотрим пример (листинг 10.28.). Добавим в позицию курсора таблицу, состоящую из 3-х строк и 4-х столбцов.
Dim obj_Table As Table
Set obj_Table = _
ActiveDocument.Tables.Add(Range:=Selection.Range, _
NumRows:=3, NumColumns:=4)
With obj_Table
.Borders.OutsideLineStyle = wdLineStyleTriple
.Borders.InsideLineStyle = wdLineStyleSingle
End With
Здесь мы сначала объявляем Table - для хранения ссылки на таблицу. Далее - при помощи метода Add коллекции Tables добавляем в документ новую таблицу, состоящую из 3-х строк и 4-х столбцов. Обратите внимание на параметр Range метода Add. Он задает позицию в документе, куда будет вставлена новая таблица. Здесь мы приравняли ему такое значение: Selection.Range. Ниже мы будем говорить и об объекте Selection, и о Range, однако отметим, что выражение Selection.Range можно передать обычным языком как "Текущее выделение". Значит, таблица будет вставлена в выделенную область документа, либо, если область документа явно не выделена - туда, где в момент запуска макроса установлен курсор.
Добавленная таблица не очень хорошо заметна в документе - она состоит из невидимых линий. Поэтому мы настраиваем отображение линий таблицы с помощью блока With - End With для переменной obj_Table. Воспользуемся коллекцией Borders объекта Table - она позволяет работать с границами таблицы. Параметр OutsideLineStyle позволяет задавать тип линий внешней границы таблицы. Здесь мы установили тип линии wdLineStyleTriple - это тройная линия. Аналогично, с помощью параметра InsideLineStyle мы сделали внутренние линии таблицы одинарными ( wdLineStyleSingle ).
Свойство OMaths возвращает коллекцию OMaths, которая содержит математические формулы, хранящиеся в документе. Как и в случае с другими подобными коллекциями, OMaths имеет множество полезных свойств и методов. Давайте рассмотрим пример добавления в документ новой математической формулы (листинг 10.29). Этим кодом мы добавим новую формулу, преобразовав в нее выделенный фрагмент документа.
Selection.OMaths.Add Selection.Range
Selection.Range.OMaths(1).BuildUp
Итак, для добавления нового объекта OMath в коллекцию OMath, мы используем метод Add. Главный параметр, который нужно передать методу Add - это объект типа Range, содержащий текст, который должен быть преобразован в формулу. В нашем случае это конструкция Selection.Range. Проще говоря, выделенный текст. Далее мы используем коллекцию OMaths для объекта Range текущего выделения. Она будет содержать все объекты OMath в выделении. Мы обращаемся к первому (и единственному) элементу коллекции и выполняем метод BuildUp - этот метод преобразует текст объекта в профессиональный математический вид.
10-08-Documents События.docm - пример к п. 10.7.
Работать с событиями документа гораздо проще, чем с событиями приложения. Чтобы создать обработчик события для документа нужно войти в редактор Visual Basic for Applications, выбрать в окне Project Explorer объект ThisDocument - этот объект представляет собой документ, в котором хранится Document - этот объект символизирует документ, которому принадлежит проект, а в окне выбора события - событие, для которого мы хотим создать обработчик. Вот, как (рис. 10.3.) выглядит окно редактора после создания пустого обработчика события New для документа.
(рис 10.3) Добавление обработчика события для документа (10_03.bmp) Событие New добавляется по умолчанию при выборе объекта Document в списке объектов редактора. Однако, это событие пригодно лишь для использования его в документах, которые планируется сохранить как шаблоны и использовать для автоматизации создания других документов. Ниже мы рассмотрим пример работы с шаблонами.
New - одно из самых полезных и часто используемых событий документа. Помимо него можно отметить события Open, которое выполняется при открытии документа, и Close - оно выполняется при закрытии. Эти события работают и с обычными документами, а не только с шаблонами, как New.
Open и Close используют для настройки проверок документа перед закрытием, для инициализации событий приложения ( Open ) и в других подобных случаях. Если вам нужно сделать что-то до начала редактирования документа или перед его закрытием - воспользуйтесь событиями Open и Close.
В этой лекции мы рассмотрели особенности программной работы с документами MS Word. На очереди - работа с объектами, представляющими собой различные участки документов.
Documents включает в себя открытые документы с их полезными методами и свойствами. Наряду с Document, которые входят в ActiveDocument,
ActiveDocument имеет те же свойства и методы, что и любой Document - ActiveDocument удобнее пользоваться.
Так же обратите внимание на объект ThisDocument. Он представляет собой тот документ, из которого запущен макрос.
Для начала давайте рассмотрим свойства и методы Document.
Этот метод добавляет новый Document в Documents - то есть создает новый документ. Его можно использовать так (листинг 10.1.):
Documents.Add
При выполнении такого кода будет создан новый пустой документ на основе шаблона Normal. Чтобы ссылка на созданный документ была присвоена переменной, можете воспользоваться такой конструкцией (листинг 10.2.):
Dim obj_NewDoc As Word.Document
Set obj_NewDoc = Application.Documents.Add
Здесь мы сначала объявили переменную соответствующего типа, а потом присвоили ей ссылку на новый документ.
Метод Add может принимать несколько необязательных параметров. Полный вызов метода выглядит так:
Documents.Add (Template, NewTemplate, DocumentType, Visible)
Template (Шаблон) - отвечает за шаблон, который будет использован при создании файла. По умолчанию это Normal.dotm.
NewTemplate (Новый шаблон) - если этот параметр установлен в True - файл будет обрабатываться как шаблон. По умолчанию установлен в False.
DocumentType (Тип документа) - очень полезный параметр, который позволяет создавать документы различных типов. На тип документа указывает одна из констант, в частности, по умолчанию это wdNewBlankDocument - то есть пустой документ. Так же этот параметр может принимать значения wdNewEmailMessage (Почтовое сообщение), wdNewFrameset (Документ с рамками - такие используются при создании WEB-страниц), wdNewWebPage (WEB-страница).
Visible (Видимость) - по умолчанию установлен в True - то есть создаваемый документ видим для пользователя. Если вы хотите, сначала сформировать новый документ, а уже потом показать его пользователю - установите это свойство в False, а после окончания формирования документа - воспользуйтесь свойством Visible созданного документа, чтобы отобразить его.
Метод Open используется для открытия существующих файлов, возвращая объект типа Document. Файл, имя которого задано при вызове метода, открывается и добавляется в Documents. Метод может принимать множество параметров, однако основной - это FileName, который и задает имя открываемого файла.
Например, для открытия файла 1.docm, расположенного в корневом каталоги диска С, можно воспользоваться кодом из листинга 10.3.
Documents.Open FileName:="C:\1.docm"
Метод Close используется для закрытия всех открытых документов. Применяют его достаточно редко - удобнее закрывать каждый конкретный документ по отдельности. При вызове метода без параметров система задаст вопрос о сохранении документов, которые были изменены (листинг 10.4.).
Documents.Close
Полный вызов метода выглядит так:
Documents.Close(SaveChanges, OriginalFormat, RouteDocument)
Среди параметров для нас наибольший интерес представляют первых два.
SaveChanges (Сохранить изменения) отвечает за сохранение изменений. По умолчанию он установлен в wdPromptToSaveChanges (Вывести запрос о сохранении), так же он может быть установлен в wdDoNotSaveChanges (Не сохранять изменения) и wdSaveChanges (Сохранить изменения). Как видите, с помощью параметра wdSaveChanges можно организовать удобное и быстрое закрытие множества документов с сохранением изменений
OriginalFormat (Формат) - отвечает за формат сохраняемого документа. Может принимать различные значения: wdOriginalDocumentFormat (Оригинальный формат документа), wdPromptUser (Запросить формат у пользователя), wdWordDocument (Документ Word).
Вот как выглядит вызов метода Close, который сохраняет все открытые документы и закрывает их (листинг 10.5.)
Documents.Close (wdSaveChanges)
Учтите - если какие-то из документов сохраняются в первый раз - вы получите запрос об имени документа.
10-01-Item.docm - пример к п. 10.2.4.
Метод Item позволяет обращаться к открытым документам (то есть - к объектам Document ), используя их индексы или имена. Нумерация документов начинается с единицы. Чтобы узнать общее количество открытых документов, можно воспользоваться свойством Documents.Count.
Например, с помощью нижеприведенного кода из листинга 10.6 мы поочередно выводим имена открытых документов с указанием номера документа в
For i = 1 To Documents.Count
MsgBox (Documents.Item(i).Name _
" - документ номер " i)
Next i
Очевидно, что свойство Count Documents позволяет узнать количество открытых документов, а свойство Name объекта Item(i) содержит имя документа с индексом i.
На рис. 10.1 вы можете видеть одно из окон с сообщением об имени и номере документа.
(рис 10.1) Окно сообщения об имени и номере документаК документам в Documents можно обращаться и по именам. Также, при обращении к документу необязательно напрямую указывать метод Item - в листинге 10.7 вы можете видеть различные варианты обращения к документу.
MsgBox Documents("Мой документ.docx").Name
MsgBox Documents.Item("Мой документ.docx").Name
MsgBox Documents(1).Name
Метод Save сохраняет все документы
Documents.Save
Среди свойств Documents нас будет интересовать лишь одно - Count. Это свойство позволяет узнать количество элементов в Documents, то есть - количество открытых документов. В листинге 10.9 мы выводим в окне сообщения количество открытых документов
MsgBox ("Количество открытых документов: " _
Documents.Count)
Объект Document - это открытый документ. У него есть множество свойств и методов, которые активно используются при программной работе с документами. Здесь мы рассмотрим важнейшие из них.
Позволяет сделать документ активным. Например, это может понадобиться для редактирования документа.
Например, код из листинга 10.10 активирует первый документ среди открытых документов.
Dim obj_Doc As Document Set obj_Doc = Documents.Item(1) obj_Doc.Activate
Метод Close закрывает документ. Например, код из листинга 10.11 позволяет закрыть документ, из которого он запущен.
ThisDocument.Close
Метод можно вызывать с параметрами. В частности, полезен параметр SaveChanges, предназначенный для настройки автоматического сохранения документа. Если присвоить ему значение wdSaveChanges - документ будет сохранен при закрытии. Например, код из листинга 10.12 по очереди закрывает каждый из открытых документов.
Dim obj_Doc As Document
For Each obj_Doc In Documents
obj_Doc.Close SaveChanges:=wdSaveChanges
Next
При закрытии документов, которые были открыты и изменены, система выведет запрос о сохранении изменений.
10-02-Статистика документа.docm - пример к п. 10.5.3
Полезный метод, позволяющий получать различные статистические сведения о документе. Полный вызов выглядит так:
ComputeStatistics(
Параметр позволяет задавать тип получаемой статистики. Он может принимать значения типа wdStatistic - константы, описание которых приведено ниже:
wdStatisticCharacters -количество символов без пробеловwdStatisticCharactersWithSliaces - количество символов, включая пробелыwdStatisticLines - количество строкwdStatisticPages - количество страницwdStatisticParagraphs - количество абзацевwdStatisticWords - количество словПараметр IncludeFootnotesAndEndnotes позволяет указать, учитывать ли при подсчете статистики сноски. Установленный в значение True, включает сноски в подсчет статистики, в False - исключает.
Чтобы подсчитать и вывести количество символов в документе без учета пробелов и с учетом сносок, нам понадобится код, приведенный в листинге 10.13.
Dim num_Stat
num_Stat = ActiveDocument.ComputeStatistics _
(wdStatisticCharacters, True)
MsgBox ("В документе " + Str(num_Stat) + _
" символов без пробелов, включая сноски")
Этот метод уменьшает размер документа на одну страницу - его удобно использовать, чтобы избавиться от страницы документа, на которой есть лишь несколько строчек.
10-03-GoTo.docm - пример к п. 10.5.5.
Метод GoTo позволяет перемещаться по документу, "передвигать" позицию редактирования. Метод возвращает объект Range, который представляет собой место документа, на которое должен быть осуществлен переход. Его полный вызов выглядит так:
GoTo(What, Which, Count, Name)
What - тип части документа, на которую осуществляется переход. Например, среди них есть такие элементы:
wdGoToBookmark - закладка (пожалуй, наиболее полезный элемент)wdGoToHeading - заголовокwdGoToLine - строкаwdGoToObject - объектwdGoToPage - страницаWhich - направление перемещения.
wdGoToAbsolute - перемещение в абсолютных единицах измеренияwdGoToFirst - перемещение к первому элементуwdGoToLast -перемещение к последнему элементуwdGoToNext - переход на следующий элементwdGoToPrevious - переход на предыдущий элементwdGoToRelative - перемещение относительно текущего элементаCount - номер элемента в документе. Этот параметр часто опускают, так как переход осуществляется с использованием других установок, в частности - параметра Which.
Name - имя элемента, на который осуществляется переход. Например, имя может быть у закладки.
С помощью листинга 10.14. мы можем перейти к первому заголовку в файле и добавить в его начало слово "Глава"
Dim obj_Range As Range Set obj_Range = Application.Documents. _ Item(1).GoTo(wdGoToHeading, wdGoToFirst) obj_Range.Text = "Глава " + obj_Range.Text
Возвращает объект Range, заданный позицией начального и конечного символа. Подробнее о нем мы поговорим в соответствующей лекции.
Эти методы позволяют отменить последнее изменение ( ) и вернуть отмененное изменение ( Undo ).
Позволяет удалить из документа различную персональную информацию. Например - данные о создателе документа и т.д. Метод может принимать параметр, который определяет, что именно следует удалять. На практике самым полезным является параметр .
Сохраняет документ. Обычно применяют без параметров, хотя полезен может быть параметр NoPrompt. Установленный в True, предписывает MS Word сохранять файл без дополнительных вопросов пользователю.
Обычно для сохранения файлов с определенными параметрами используют метод SaveAs.
Позволяет сохранить документ с новым именем или в новом формате. Обычно именно этот метод применяют и для первого сохранения новых документов, так как он позволяет очень тонко управлять параметрами сохранения. Всего этот метод принимает 16 параметров. Наиболее полезны среди них следующие:
FileName - задает имя файла
FileFormat - формат файла. Здесь могут быть использованы значения из перечисления wdSaveFormat. В частности, для сохранения документа в формате по умолчанию (.docx) надо использовать wdFormatDocumentDefault. Для сохранения документа в формате Word 97 - wdFormatDocument97, для получения HTML-файла - wdFormatHTML.
Выделяет все содержимое документа. После этого с документом можно работать, используя средства объекта Selection.
Очищает историю изменений документа. После выполнения этого метода пользователь не сможет отменить изменения документа.
Это свойство позволяет получить объект приложения документа. Вы можете подумать, что это - ошибка, что, наоборот, объект документа содержится в объекте приложения. Однако, ошибки нет. Это свойство позволяет обращаться к приложению тогда, когда у нас нет ссылки на него, а есть лишь ссылка на документ. Например, код в листинге 10.15 позволяет скрыть окно Microsoft Word вместе с окном документа, используя свойство Visible объекта Application.
ThisDocument.Application.Visible = False
Свойство AttachedTemplate позволяет узнать, какой шаблон присоединен к документу, а так же - изменить этот шаблон на другой. Это очень полезное свойство - ведь шаблоны могут содержать множество нужных макросов, стилей и т.д., а с помощью AttachedTemplate можно удобно управлять ими.
Например, такой листинг 10.16. позволяет вывести имя присоединенного шаблона и путь к нему:
Dim obj_Templ As Template
Set obj_Templ = ActiveDocument.AttachedTemplate
MsgBox ("Имя шаблона: " obj_Templ.Name _
", путь к шаблону: " obj_Templ.Path)
Здесь мы сначала объявили новую переменную типа Template, потом присвоили ей ссылку на шаблон, присоединенный к активному документу, а потом воспользовались свойствами Name и Path шаблона, чтобы вывести информацию о нем.
Листинг 10.17 позволяет присоединить к документу шаблон MyTemplate.dotm, расположенный на диске C.
ActiveDocument.AttachedTemplate = "C:\MyTemplate.dotm"
Возвращает коллекцию , которая содержит все закладки в документе. Закладки позволяют удобно организовать навигацию по документу, особенно удобно с их помощью автоматизировать создание новых документов на основе шаблонов. Подробнее о закладках мы поговорим ниже.
10-04-Символы.docm - пример к п. 10.6.4.
Все эти свойства возвращают объекты, предназначенные для работы с различными частями документа.
Characters (Символы) - возвращает одноименную коллекцию, каждый объект которой представляет собой отдельный символ в документе. Каждый объект коллекции Characters представляет собой диапазон ( Range ), содержащий один символWords (Слова) - то же самое, но уже для слов.Sentences (Предложения) - то же самое для предложений.Paragraphs (Абзацы) - коллекция абзацев документа.Hyperlinks - гиперссылки. При добавлении гиперссылки обратите внимание на то, что метод Add использует объект привязки гиперссылки - Anchor (Якорь) - им может быть, например, графический или текстовый элемент.Indexes - индексы.InlineShapes, Shapes - фигуры, графические элементыLists - списки.OMaths - формулы.Sections - разделы.Tables - таблицы.Работа со всеми этими коллекциями схожа. Давайте рассмотрим ее на примере коллекции Characters, которую, как уже было сказано, можно использовать для работы с отдельными символами документа. Работу с некоторыми другими коллекциями мы рассмотрим ниже.
MsgBox ("Количество символов: " _
ActiveDocument.Characters.Count)
С помощью метода Item коллекции, мы можем получить доступ к каждому символу документа. Например, с помощью этого метода можно проводить различные статистические подсчеты. листинг 10.19. позволяет узнать, сколько раз в документе использована буква "ф" в верхнем и нижнем регистре.
Dim var_Fcount
var_Fcount = 0
For i = 1 To ActiveDocument.Characters.Count
If ActiveDocument.Characters.Item(i) = "ф" Or _
ActiveDocument.Characters.Item(i) = "Ф" Then _
var_Fcount = var_Fcount + 1
Next i
MsgBox ("Количество букв 'Ф' в документе: " _
var_Fcount)
Листинг 10.20 позволяет заменить букву "ё" в верхнем и нижнем регистре на "е".
Dim obj_D As Document
Set obj_D = ActiveDocument
For i = 1 To obj_D.Characters.Count
If obj_D.Characters.Item(i) = "ё" _
Then obj_D.Characters.Item(i) = "е"
If obj_D.Characters.Item(i) = "Ё" _
Then obj_D.Characters.Item(i) = "Е"
Next i
В листинге 10.21 вы можете найти программу, которая "переворачивает" весь текст в документе - меняет последний символ с первым, второй - с предпоследним и так далее.
Dim obj_D As Document
Dim str_Chr As String
Dim var_Count As Variant
Set obj_D = Documents.Add
obj_D.Range.Text = "Привет!"
var_Count = obj_D.Characters.Count
For i = 1 To var_Count \ 2
str_Chr = obj_D.Characters.Item(i)
obj_D.Characters.Item(i) = _
obj_D.Characters.Item(var_Count - i + 1)
obj_D.Characters.Item(var_Count - i + 1) = _
str_Chr
Next i
Здесь мы сначала заводим переменную для хранения ссылки на активный документ, далее - строковую переменную для временного хранения одного символа и переменную типа Variant, в которой будем хранить количество символов в документе.
Далее создаем новый документ и добавляем в него текст "Привет" с помощью свойства Text объекта Range. Именно этот текст мы и будем переворачивать.
Итак, мы используем цикл длительностью, равной количеству символов в документе, деленному на 2, причем обратите внимание на оператор деления. Это - целочисленное деление, то есть для четного числа символов в обмене будут участвовать все символы, а для нечетного - один, "центральный" символ останется на своем месте.
В цикле мы сначала присваиваем i -й символ переменной, потом присваиваем i -му символу противоположный ему символ, а в конце - противоположному символу - символ, хранящийся в переменной. Обратите внимание на алгоритм расчета противоположного символа. Var_Count - i + 1 дает нам последний символ при i = 1, то есть - для первого символа и т.д. В этом несложно убедиться путем расчетов. Например, если в тексте 10 символов, то для обмена с первым символом ( i = 1) мы получим последний символ (10-1+1=10), для второго ( i =2) - девятый (10-2+1=9) и т.д.
10-05-Content.docm - пример к п. 10.6.5.
Свойство документа Content возвращает объект Range - текст документа без сносок, колонтитулов и т.д.
В листинге 10.22 вы можете найти пример использования свойства Content для настройки шрифта документа.
Dim obj_C As Range
Set obj_C = ActiveDocument.Content
With obj_C.Font
.Name = "Arial"
.Size = 12
.Spacing = 1.5
End With
В этом коде мы объявили Range, связали с ней объект Range, возвращаемый свойством Content активного документа, после чего, воспользовавшись свойством Font объекта Range, установили гарнитуру ( Name ) шрифта Arial, размер ( Size ) - 12 пунктов и расстояние между символами в 1.5 пункта.
Чтобы записать текст документа в строковую переменную, можно воспользоваться кодом листинга 10.23.
Dim str_Text As String
str_Text = ActiveDocument.Content.Text
Cвойство Text объекта Range возвращает текст объекта. Записав текст в переменную, мы сможем работать с ней средствами
10-06-Сноски.docm - пример к п. 10.6.6.
Эти свойства возвращают, соответственно, коллекцию и . В коллекции находятся объекты - то есть концевые ссылки - ссылки, которые расположены в конце документа. В коллекции расположены объекты - обычные ссылки, которые расположены в конце страницы.
Давайте рассмотрим работу с этими объектами на примере . Работа с аналогична работе с .
Добавить в документ новую ссылку можно с помощью метода Add коллекции .
Полный вызов метода Add выглядит так:
ActiveDocument.Footnotes .Add(Range, Reference, Text)Range - область текста, для которой вставляется сноска.Reference - определяет символ сноски. По умолчанию используется автоматическая нумерация сносок.Text - текст сноски.В листинге 10.24. вы можете видеть код, добавляющий сноску для выделенного фрагмента текста (как правило, выделяют слово):
ActiveDocument.Footnotes.Add _
Range:=Selection.Range, _
Text:="Новая сноска!"
Свойство Count коллекции позволяет узнать количество ссылок в документе.
Чтобы обращаться к отдельным сноскам (объектам ), можно пользоваться либо их индексами в коллекции , либо - оператором For Each - Next.
Свойство Range каждого объекта возвращает ссылку на объект Range, представляющий собой диапазон, который сноска занимает в документе. С помощью методов объекта можно настраивать различные параметры сноски.
Свойство Reference возвращает объект типа Range, который представляет собой область, занимаемую значком-ссылкой на сноску в
В листинге 10.25 приведен пример форматирования сносок и ссылок на них.
Dim obj_D As Document
Dim obj_Footnote As Footnote
Set obj_D = ActiveDocument
'Форматируем сноски
For Each obj_Footnote In obj_D.Footnotes
obj_Footnote.Range.Font.Size = 11
Next
'Форматируем знаки-ссылки на сноски
For i = 1 To obj_D.Footnotes.Count
obj_D.Footnotes.Item(i).Reference _
.Font.Color = wdColorRed
Next i
Сначала мы, с помощью конструкции For-Each перебираем все сноски и устанавливаем размер шрифта для каждой из них равным 11 пунктов.
Далее, с помощью цикла For-Next мы обходим все ссылки на сноски в тексте и делаем цвет их шрифта красным.
Чтобы удалить сноску, можно воспользоваться методом Delete объекта .
Узнать номер сноски в коллекции можно, используя свойство Index. Например, код листинга 10.26 позволяет вывести поочередно все сноски с их номерами в окне сообщения.
Dim obj_D As Document
Dim obj_Footnote As Footnote
Set obj_D = ActiveDocument
'Выводим информацию о сносках
For Each obj_Footnote In obj_D.Footnotes
MsgBox ("Номер сноски: " obj_Footnote.Index _
vbCrLf "Текст сноски: " obj_Footnote.Range.Text)
Next
Константа vbCrLf заменяет собой знак перевода строки, в итоге при выполнении этого кода для каждой сноски будет выведено такое окно (рис. 10.2.).
(рис 10.2) Информация о сносках
Свойство FullName возвращает строку, содержащую полное имя документа - то есть полный путь к документу и его имя.
MsgBox (ActiveDocument.FullName)
Свойство Name возвращает имя документа без пути, а Path - путь без имени.
Возвращает True если документ не изменялся после последнего сохранения.
10-07-Таблицы.docm - пример к п. 10.6.9.
Свойство возвращает коллекцию Tables (Таблицы), которая содержит объекты Table - таблицы, которые имеются в документе. Работа с таблицами похожа на работу с другими объектами документов.
Например, чтобы добавить в документ новую таблицу, нужно воспользоваться методом Add коллекции Tables. Рассмотрим пример (листинг 10.28.). Добавим в позицию курсора таблицу, состоящую из 3-х строк и 4-х столбцов.
Dim obj_Table As Table
Set obj_Table = _
ActiveDocument.Tables.Add(Range:=Selection.Range, _
NumRows:=3, NumColumns:=4)
With obj_Table
.Borders.OutsideLineStyle = wdLineStyleTriple
.Borders.InsideLineStyle = wdLineStyleSingle
End With
Здесь мы сначала объявляем Table - для хранения ссылки на таблицу. Далее - при помощи метода Add коллекции Tables добавляем в документ новую таблицу, состоящую из 3-х строк и 4-х столбцов. Обратите внимание на параметр Range метода Add. Он задает позицию в документе, куда будет вставлена новая таблица. Здесь мы приравняли ему такое значение: Selection.Range. Ниже мы будем говорить и об объекте Selection, и о Range, однако отметим, что выражение Selection.Range можно передать обычным языком как "Текущее выделение". Значит, таблица будет вставлена в выделенную область документа, либо, если область документа явно не выделена - туда, где в момент запуска макроса установлен курсор.
Добавленная таблица не очень хорошо заметна в документе - она состоит из невидимых линий. Поэтому мы настраиваем отображение линий таблицы с помощью блока With - End With для переменной obj_Table. Воспользуемся коллекцией Borders объекта Table - она позволяет работать с границами таблицы. Параметр OutsideLineStyle позволяет задавать тип линий внешней границы таблицы. Здесь мы установили тип линии wdLineStyleTriple - это тройная линия. Аналогично, с помощью параметра InsideLineStyle мы сделали внутренние линии таблицы одинарными ( wdLineStyleSingle ).
Свойство OMaths возвращает коллекцию OMaths, которая содержит математические формулы, хранящиеся в документе. Как и в случае с другими подобными коллекциями, OMaths имеет множество полезных свойств и методов. Давайте рассмотрим пример добавления в документ новой математической формулы (листинг 10.29). Этим кодом мы добавим новую формулу, преобразовав в нее выделенный фрагмент документа.
Selection.OMaths.Add Selection.Range
Selection.Range.OMaths(1).BuildUp
Итак, для добавления нового объекта OMath в коллекцию OMath, мы используем метод Add. Главный параметр, который нужно передать методу Add - это объект типа Range, содержащий текст, который должен быть преобразован в формулу. В нашем случае это конструкция Selection.Range. Проще говоря, выделенный текст. Далее мы используем коллекцию OMaths для объекта Range текущего выделения. Она будет содержать все объекты OMath в выделении. Мы обращаемся к первому (и единственному) элементу коллекции и выполняем метод BuildUp - этот метод преобразует текст объекта в профессиональный математический вид.
10-08-Documents События.docm - пример к п. 10.7.
Работать с событиями документа гораздо проще, чем с событиями приложения. Чтобы создать обработчик события для документа нужно войти в редактор Visual Basic for Applications, выбрать в окне Project Explorer объект ThisDocument - этот объект представляет собой документ, в котором хранится Document - этот объект символизирует документ, которому принадлежит проект, а в окне выбора события - событие, для которого мы хотим создать обработчик. Вот, как (рис. 10.3.) выглядит окно редактора после создания пустого обработчика события New для документа.
(рис 10.3) Добавление обработчика события для документа (10_03.bmp) Событие New добавляется по умолчанию при выборе объекта Document в списке объектов редактора. Однако, это событие пригодно лишь для использования его в документах, которые планируется сохранить как шаблоны и использовать для автоматизации создания других документов. Ниже мы рассмотрим пример работы с шаблонами.
New - одно из самых полезных и часто используемых событий документа. Помимо него можно отметить события Open, которое выполняется при открытии документа, и Close - оно выполняется при закрытии. Эти события работают и с обычными документами, а не только с шаблонами, как New.
Open и Close используют для настройки проверок документа перед закрытием, для инициализации событий приложения ( Open ) и в других подобных случаях. Если вам нужно сделать что-то до начала редактирования документа или перед его закрытием - воспользуйтесь событиями Open и Close.
В этой лекции мы рассмотрели особенности программной работы с документами MS Word. На очереди - работа с объектами, представляющими собой различные участки документов.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.