Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Доступ к данным документов Word




Доступ к данным документов Word и Excel

При написании макросов, обрабатывающих данные, одной из важнейшей проблем является проблема получения доступа к данным. Это необходимо для переписи их в переменные, использующиеся макросом при обработке информации, и для записи в документ информации, полученной в результате работы макроса. Решение указанной проблемы далеко неочевидно для неподготовленного программиста


При получении доступа к данным документа Word возможны следующие случаи:

· необходимо перейти на строку с конкретным номером и на символ с заданным номером,

· необходимо переместиться на заданное число строк и на заданное число символов от позиции курсора,

· необходимо выделить конкретное число строк или символов, начиная от позиции курсора,

· необходимо выполнить какие-либо операции с выделенными символами или с некоторыми из них.

Эту задачу позволяет решить объект Characters Collection Object, встроенный в объект Range, который в свою очередь встроен в объект Selection, являющийся компонентом первичного объекта Application. Методы доступа к данным перечислены в табл. 7.1, а методы, позволяющие выполнять операцию с данными, приведены в табл. 7.2.

В табл. 7.1 в первой колонке жирным шрифтом выделен неизменяемый текст операторов. В описании языка Visual Basic for Microsoft Word вместо численных параметров стоят имена соответствующих констант:

· параметр What=wdGoToLine – переход на строку,

· параметр Which=wdGoToAbsolute – абсолютный номер строки,

· параметр Unit=wdLine, если имеется в виду строка,

· параметр Unit=wdCharacter, если имеется в виду символ,

· параметр Extend=wdExtend для включения режима выделения символов,

· параметр Extend опускается для простого перемещения курсора.

Заданные численные значения констант определены экспериментально. Изменяемые программистом значения параметров напечатаны обычным шрифтом. В примерах значения изменяемых параметров выделены жирным шрифтом для того, чтобы их можно было легко связать с комментарием.

Переход на заданную строку выполняется методом Selection.GoTo, переход относительно курсора и выделение символов – методами MoveLeft, MoveRight, MoveUp, MoveDown. Для выделения символов указывается параметр Extend=wdExtend.

Выполнение различных действий по редактированию текста возможно в двух вариантах – печать символов в режиме вставки, печать в режиме замены выделенных символов и операции над выделенными символами. Печать символов выполняется методами: Selection.TypeParagrph, Selection.TypeText и Application.Keyboard. Следует иметь в виду, что выделенные символы рассматриваются как некоторый массив символов, к которому применимы ранее рассмотренные методы чтения данных из массива и записи данных из массива.


 

Таблица 7.1 Методы объекта Selection, обеспечивающие доступ к данным Пример Переход на пятую строку Selection.GoTo What:=3, Which:=1, Count:= 5 Сдвиг курсора вверх на 10 строк Selection.MoveUp Unit:=5, Count:= 10 Сдвиг курсора ввниз на 15 строк Selection.MoveDown Unit:=5, Count:= 15 Сдвиг курсора влево на 20 символов Selection.MoveLeft Unit:=1, Count:= 20 Сдвиг курсора вправо на 30 символов Selection.MoveRight Unit:=1, Count:= 30 Выделение 40 символов слева от курсора Selection.MoveLeft Unit:=1, Count:=40, Extend:=1 Выделение 50 символов слева от курсора Selection.MoveRight Unit:=1, Count:=50, Extend:=1 Выделение 10 строк вверх от курсора Selection.MoveUp Unit:=5, Count:=10, Extend:=1 Выделение 15 строк вниз от курсора Selection.MoveDown Unit:=5, Count:=15, Extend:=1
Действие Перемещение на заданную строку Движение от позиции курсора вверх   Движение от позиции курсора вниз Движение от позиции курсора влево Движение от позиции курсора вправо Выделение заданного числа символов слева от курсора Выделение справа от курсора заданного числа символов Выделение вверх от курсора заданного числа строк Выделение вниз от курсора заданного числа строк
Метод Selection.GoTo What:=3, Which:=1, Count:=<номер строки> Selection.MoveUp Unit:=5, Count:=<сдвиг> Selection.MoveDown Unit:=5, Count:=<сдвиг> Selection.MoveLeft Unit:=1, Count:= <сдвиг> Selection.MoveRight Unit:=1, Count:= <сдвиг> Selection.MoveLeft Unit:=1, Count:=<число символов>, Extend:=1 Selection.MoveRight Unit:=1, Count:=<число символов>, Extend:=1 Selection.MoveUp Unit:=5, Count:=<число символов>, Extend:=1 Selection.MoveDown Unit:=5, Count:=<число символов>, Extend:=1

 

Таблица 7.2 Методы, обеспечивающие выполнение операций над данными Пример Selection.TypeParagraph Печать слова "рыба" в справа от курсора Selection.TypeText Text:="Рыба" Пример не предусмотрен Включение атрибута жирность и установка размера шрифта выделенных символов With Selection.Characters(номер) .Bold = True .Font.Size = 16 End With Вывод сообщения о числе выделенных символов MsgBox Selection.Characters.Count & " символов выделено" Замена первого из выделенных символов символом "D" Selection.Characters(1) = "D"
Действие Вставка абзаца после курсора Печать заданного текста Выбор клавиатуры для ввода текста Изменение атрибутов шрифта одного из выделенных символов Подсчет количества выделенных символов Замена одного из выделенных символов
Метод Selection.TypeParagraph Selection.TypeText Text:="Текст" Application.Keyboard (1049) With Selection.Characters(номер) .имя атрибута = <значение> End With Selection.Characters.Count Selection.Characters(номер) = "символ"

 

7.2.2. Доступ к данным, помещенным в клетки
электронной таблицы

Доступ к отдельно взятой клетке начинается с выделения клетки командой Range("адрес_клетки").Select. Например, Range("A1").Select.

Следующим шагом при записи данных является применение оператора присваивания значения записываемых данных свойству FormulaR1C1 объекта ActiveCell. Например, по команде ActiveCell.FormulaR1C1 = "123" в активную (выбранную, текущую) клетку записывается число "123".

Если необходимо переписать данные из ячейки в переменную, то следует активизировать клетку командой Range(…), а потом применить оператор присваивания вида имя_переменной = ActiveCell.Value. Например, команда a1 = ActiveCell.Value записывает в переменную а1 данные из текущей клетки.

В случае необходимости обработать блок клеток общий подход сохраняется, но меняются средства достижения цели. На первом шаге командой Range(…) активизируется базовая клетка, относительно которой будут искаться клетки-источники данных и клетки-приемники данных. На втором шаге командой ActiveCell.Offset(rowOffset:=…, columnOffset:=…).Activate активизируется нужная клетка. Параметры rowOffset и columnOffset допускают определение по значениям переменных. Это позволяет строить процессы чтения и записи данных в виде цикла. Далее применяются описанные выше команды ActiveCell.FormulaR1C1 и ActiveCell.Value. На рис. 7.4 показаны фрагменты процедуры, читающие данные из клеток c3, d3, e3, f3, g3 и записывающие их в клетки c5, d5, e5, f5, g5.

Dim i As Integer

Dim b(1 To 10) As Integer

Worksheets("Лист2").Activate 'переход на второй лист

For i = 1 To 5 'чтение данных из клеток в массив

Range("b2").Select

ActiveCell.Offset(rowOffset:=1, columnOffset:=i).Activate

b(i) = ActiveCell.Value

Next i

For i=1 to 5 'запись данных из массива в клетки

Range("b2").Select

ActiveCell.Offset(rowOffset:=3, columnOffset:=i).Activate

ActiveCell.FormulaR1C1 = b(i)

Next i

Рис. 7.4. Чтение данных из блока клеток в массив
и запись данных из массива в блок клеток





Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 355; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.