
- •Оглавление
- •Создание vba приложения
- •Задание 1
- •Автоматический запуск процедур
- •Границы таблицы
- •Свойства и методы объекта Table
- •Коллекция строк таблицы Rows
- •Работа с ячейками Запись информации в ячейки таблицы
- •Задание №3
- •Чтение информации из ячейки
- •Задание №4
- •Экспорт-импорт модулей
- •Задание №5
Работа с ячейками Запись информации в ячейки таблицы
Для записи информации в ячейку, находящуюся на пересечении строки c номером Row и столбца с номером Column можно использовать метод Cell объекта Table
TableOblect.Cell(Row, Column)
Метод возвращает ячейку. Например:
Dim vCell As Cell
Set vCell = ActiveDocument.Tables(1).Cell(1, 2)
vCell.Range.Text = "text" 'заменяем содержимое ячейки на text
vCell.Range.InsertAfter "456" ' вставляем в конец текста ячейки 456
vCell.Range.InsertBefore "123" ' вставляем перед текстом ячейки 123
В итоге во второй ячейке первой строки будет записано 123text456.
Объект Row имеет свойство Cells, являющееся коллекцией всех ячеек строки. Как и элементу любой коллекции к ячейке можно обратиться по ее индексу.
Нижеприведенный код добавляет в конце таблицы строку и записывает в нее порядковый номер (не считая строку с заголовками) и информацию из формы UserForm1.
ActiveDocument.Tables(1).Rows.Add
With ActiveDocument.Tables(1).Rows.Last
.Range.Font.Size = 12
.Range.Bold = False
.Cells(1).Range.Text = ActiveDocument.Tables(1).Rows.Count - 1
.Cells(2).Range.Text =
UserForm1.TextBoxFam.Text
.Cells(3).Range.Text = UserForm1.TextBoxData.Text
.Cells(4).Range.Text = UserForm1.TextBoxEvent.Text
End With
Задание №3
3.1 Изменить форму задания №1, добавив две кнопки "Записать в таблицу" и "Создать письма". Убрать кнопку "Создать".
3.2 Обработчик нажатия кнопки "Записать в таблицу" выполняет следующие действия:
3.2.1. Проверяет наличие открытого документа InfoTable.doc. Для проверки написать процедуру checkInfoTable, результатом работы которой является наличие открытого документа InfoTable.doc. Процедура охватывает пункты 3.2.1-3.2.4
'проверка наличия открытого документа
For i = 1 To Documents.Count
If Documents(i).Name = "InfoTable.doc" Then
Documents("InfoTable.doc").Activate
Exit Sub
End If
Next
3.2.2. Если такого документа не окажется, предлагается выбор: создать новый или открыть существующий документ?
3.2.3. Для создания нового документа написать процедуру createInfoTable, в которой:
создается новый документ и сохраняется в директории присоединенного шаблона под именем InfoTable.doc;
Для удобства обращения к объектам использовать возвращаемое методом Add значение
Set infoDoc = Documents.Add
infoDoc.SaveAs startDoc.AttachedTemplate.Path & "\InfoTable.doc"
в InfoTable.doc создается таблица из 4-х колонок и 1 строки;
Set infoTable = infoDoc.Tables.Add(Selection.Range, 1, 4, _
wdWord9TableBehavior, wdAutoFitContent)
определяются границы, выравнивание по центру и шрифт
заполняются заголовки
Номер |
Фамилия |
Дата |
Мероприятие |
3.2.4. Если принято решение открыть существующий файл, то вызывается стандартное окно диалога для открытия файла
Dialogs(wdDialogFileOpen).Show
Посмотреть справку по объектам Dialogs и Dialog Object Members. Разобраться в сути методов Display, Execute и Show.
Проверить, что открывается нужный файл.
Dim dlg As Dialog
Set dlg = Dialogs(wdDialogFileOpen)
M: dlg.Display
If dlg.Name = "InfoTable.doc" Then
dlg.Execute
Else
MsgBox "Надо открыть InfoTable.doc!"
Exit Sub ' или GoTo M
End If
3.2.5. Когда известно, что документ InfoTable.doc открыт, вызывается процедура writeToTable, в которой в конец таблицы добавляется новая строка и в нее записывается порядковый номер, фамилия, дата и мероприятие.
3.3 Для удобства тестирования поместить на панели быстрого доступа кнопку вызова макроса AutoOpen, который показывает форму. В этом случае он будет работать как обычный макрос.