No Image

Программирование в vba word

843 просмотров
10 марта 2020

Глава 15. Программирование на VBA в Word.

Объектная модель Word

Ключевые объекты Word: окна, выделения, диапазоны и объект Find

Диапазоны или выделения: что использовать при работе с текстом

Методы и свойства для манипуляции с текстом

Поиск и замена текста с помощью VBA в Word

Изо всего набора приложений Office Word предлагает наиболее богатый набор средств программирования. Знакомство с объектами Word, такими как Range и Find, иногда оказывается рискованным, но это очень важно, если вы действительно хотите создавать VBA-процедуры, раскрывающие всю мощь Word. Именно об этом мы и поговорим в настоящей главе.

Объектная модель Word содержит так много объектов и их коллекций, что вам потребуется огромный лист бумаги, если вы захотите построить на нем иерархию всех этих объектов в графическом виде. Очевидно, что я смогу рассмотреть лишь малую толику от того колоссального количества объектов, свойств и методов, которые вы сможете использовать в своих программах. В настоящей главе освещены только наиболее важные приемы работы с Word VBA. Если вы хотите получить более подробные сведения, вам придется неоднократно обращаться к справочной системе.

Знакомство с объектом Application

Как и во всех других VBA-приложениях, ключевым в объектной модели Word является объект Application. Другими словами, этот объект содержит все остальные объекты Word. Поскольку объект Application занимает центральное место в программировании на VBA в Word, вам даже не придется явно указывать его имя при работе со многими важными объектами. Однако вам не следует забывать о роли, которую играет этот объект, поскольку он вам потребуется при работе со свойствами и методами самого приложения, а также при обращении к некоторым другим объектам. Например, приведенная ниже инструкция использует метод List Commands объекта Application:

Между прочим, метод List Commands создает новый документ и помещает в него таблицу, содержащую комбинации клавиш и команды меню Word. Если вы передаете методу List Commands значение True, новый документ содержит комбинации клавиш и команды меню Word. Передайте ему значение False, чтобы в нем перечислялись только команды.

В этом уроке мы разберем среду для редактирования макросов, изучим некоторые базовые команды и научимся запускать макросы с помощью горячих клавиш.

Основное меню для работы с макросами расположено в «Вид – Макросы».

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

Макросы в MS Word пишутся на упрощенной реализации языка Visual Basic – VBA

или сисярпе. В данном уроке мы написание макросов на сисярпе разбирать не будем – я этого языка попросту не знаю, т. к. не питаю особенно теплых чувств к разработкам Microsoft.

Для данного урока я написал следующие макросы, помогающие исключить из работы всплывающие окна с последующим выбором из списков (что отнимает уйму времени):

1. Для вставки нумерации рисунков и таблиц (бывает полезно, когда приходится оживлять чужой документ, набранный на печатной машинке производства Microsoft);

2. Для вставки подписей к рисункам и таблицам вида «Рисунок 1 – » и «Таблица 1 – »;

3. Для вставки ссылок на нумерацию рисунков и таблиц вида «°Рисунок, «°Таблица, где перечеркнутый текст имеет тип «hidden», то есть мы автоматизируем то, что делали вручную в статье «Учимся работать в Microsoft Word правильно. Работа с рисунками».

Читайте также:  Есть ли смысл менять матрицу в телевизоре

Велик соблазн хранить все макросы в отдельном шаблоне global_macros.dotm, как это описано здесь. Но, как выяснилось, работает это только в MS Office for MAC.

Под Windows, после переноса файла global_macros.dotm в папку STARTUP (C:Documents and Settings<>Application DataMicrosoftWordSTARTUP),

Настроек, подобных «Личные параметры – Расположения файлов» в Microsoft Word 2013 for Windows я не обнаружил (возможно, это уже реализовано в MS Word 2016 или 365). Поэтому, в качестве более универсального решения, я рекомендую добавлять макросы в базовый шаблон Normal.dotm с помощью редактора Microsoft Visual Basic for Applications, который открывается из MS Word с помощью комбинации клавиш «Alt + F11».

Из-за проблем с кодировкой копировать код с русскими буквами нужно только при включенной русской раскладке.

Более хирургические варианты решения этой проблемы описаны тут.

Итак, с помощью контекстного меню «Insert – Module» к шаблону «Normal» добавляем новый модуль, в который мы будем копировать скрипт.

Этот эффект лично у меня проявился не сразу (через несколько дней после начала работы с макросами, изначально все назначенные горячие клавиши работали как надо), но он исчез сразу после того, как я переименовал все процедуры.

Теперь настроим горячие клавиши для запуска макросов.

Для этого переходим в «Файл – Параметры – Настроить ленту – Сочетания клавиш: Настройка. »

В данном примере мы теперь можем добавить подпись к таблице комбинацией клавиш «Ctrl + Shift +ю».

Теперь разберем три из шести написанных макросов для рисунков (макросы для таблиц абсолютно аналогичны).

В принципе, программирование на бейсике особо ничем не отличается от программирования на остальных языках. Современный бейсик похож на Python и Ruby тем, что в нем используются отступы. Комментарии (неисполняемые строки) начинаются с одинарной кавычки.

Как я уже упоминал, процедура в VBA начинается со слова Sub, и заканчивается End Sub.

Переменная объявляется с помощью команды Dim, значение переменной устанавливается с помощью команды Set.

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

Писать скрипты можно непосредственно в редакторе Microsoft Visual Basic for Applications (он «на лету» исполняет скрипт и показывает ошибки), но мне для демонстрации проще делать это в текстовом редакторе Notepad++.

Опишем скрипт InsertImageSequence.bas (вставить номер рисунка).

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

Логика написания скрипта такая:

1. Нам нужно добавить поле, которое выводит номер последовательности. Посмотреть вид этого поля можно в контекстном меню «Коды / значения полей», кликнув по полю, полученному традиционным способом, правой кнопкой мыши;

2. Далее необходимо указать место, в которое мы хотим вставить текст / поле. В данном случае это текущее местонахождение выделения / курсора. Все основные операции с текстом в VBA замечательно описал Биллиг Владимир Арнольдович, и для понимания работы с объектами Range и Selection, которые мы будем использовать, я рекомендую прочитать его статью;

3. Необходимо в выделение добавить поле с присвоенным ему типом (в данном случае SEQ). Для этого мы будем использовать метод Add, описанный в документации Microsoft. Как обозначаются типы полей в скриптах описано здесь. В данном случае нам необходимо узнать, как обозначается в скрипте тип поля SEQ (wdFieldSequence), чтобы указать его в качестве параметра Type метода Add. Также необходимо указать параметры, которые мы посмотрели в пункте 1.

В итоге у нас получается что-то типа этого

Читайте также:  Color или colour как правильно

Элементарно. Здесь просто добавились некоторые методы из статьи Биллига для добавления текста до и после поля.

Наконец, рассмотрим скрипт InsertRefToImage.bas (добавить ссылку на изображение).

Что использовалось для написания последнего скрипта:

Все эти замечательные рецепты ищутся в обыкновенном google по запросу, начинающемуся на «word macro» или «word vba».

В следующей статье мы рассмотрим основные правила типографики и работу со списком литературы в MS Word.

Найдены возможные дубликаты

давным-давно работал в мособлсуде в гражданской канцелярии. По четным дням слушались наши дела и надо было готовить их к слушанью и в том числе печатать списки для граждан – в каком зале что слушаться будет.
Так вот, было 5 списков, которые печатали я и 4 девчонки, они состояли из 50-90 табличных строк, в которых на 5 составов поделены 53 районных суда, около 300 фамилий судей, ФИО истца и ответчика и краткая суть заявления в одно предложение.
Этих сутей (типа о возмещении ущерба, разделе наследства, восстановлении на работе и т.д) десятка три. И в среднем по 2-15 дел из каждого города в списке.
Так вот, я заебался каждый раз одно и то же печатать и внес все фамилии судей своего состава, все свои города и все типы заявлений в автозамену. Щёл пишешь – превращается в Щёлково, Троф – в судью Трофимову, преп – о нечинении препятствий в пользовании. и так далее. Заодно то же самое я сделал для девок с их городами и судьями. Печатанье списка у меня ускорилось раз в 5, если не больше.
Так что ты думаешь? Не смотря на мои убеждения и личный пример ни одна овца не пользовалась этим, тупо продолжая десятки раз писать одно и тоже полностью.

Форматирование документа

Наиболее важной особенностью работы на VBA в Word является вставка текста в документ при работе с приложениями. Для этого служат объекты Range и Selection, которые являются главными для практически любых операций, которые можно выполнять с помощью Word VBA. Некоторые из этих действий можно применять к документам в целом, но в общем случае вам необходим диапазон или выделенная область, прежде чем вносить изменения. Мы, однако, рассмотрим действия с документом при его создании.

Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, таблица, ячейка таблицы, комментарий и т. д. определяют диапазоны. Например, для того чтобы вставить некоторый текст в уже существующий документ, необходимо прописать код:

Причем данная строка будет расположена в конце существующего параграфа. С другой стороны, используя объект Selection, можно также вставить некоторый текст в документ, используя метод Add и присвоение свойства Text объекту Selection:

If Documents.Count = 0 Then Documents.Add
Selection.Text = "Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, « + TextBox1.Text +», и отвечает запросам всех программистов!»

В результате выполнения данного программного кода в документе Word будет выведена строка: “Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, Светлана, и отвечает запросам всех программистов!”.

Описание процедур

Private Sub CommandButton1_Click()
If Documents.Count = 0 Then Documents.Add
Selection.Text = "При прохождении тока напряжением в " + TextBox1.Text + "вольт попроводнику длиной " + TextBox4.Text + " метров, сечением " + TextBox3.Text + "кв. мм и удельным сопротивлением " + TextBox5.Text + " Ом*мм^2/м за " + TextBox2.Text + " секунд выделится " + TextBox6.Text + « джоулей теплоты»
Selection.Collapse direction:=wdCollapseEnd
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub scet()
If IsNumeric(TextBox1.Text) = True And
IsNumeric(TextBox2.Text) = True And
IsNumeric(TextBox3.Text) = True And
IsNumeric(TextBox4.Text) = True And
IsNumeric(TextBox5.Text) = True And Not Val(TextBox4.Text) = 0 And Not Val(TextBox5.Text) = 0 Then rez = ((Val(TextBox1.Text) ^ 2) * Val(TextBox2.Text) * Val(TextBox3.Text)) / (Val(TextBox4.Text) * Val(TextBox5.Text))
TextBox6.Text = Str$(rez)
CommandButton1.Enabled = True
Else
TextBox6.Text = ""
CommandButton1.Enabled = False
End If
End Sub

При работе с текстом на рабочем листе Word необходимо знать следующие коды:

Читайте также:  Что делать если ipad завис

определение цвета
Selection.Font.Color =
wdColorRed – красный
wdColorDarkRed – бордовый
wdColorDarkTeal – бирюзовый
wdColorBlue – синий
wdColorGreen – зеленый
wdColorBlack – черный
wdColorOrange – оранжевый

определение жирности
Selection.Font.Bold =
wdToggle – жирность

определение начертания
Selection.Font.Italic=
wdToggle – курсив

определение выравнивания
Selection.ParagraphFormat.Alignment=
wdAlignParagraphRight – выравнивание по правому краю
wdAlignParagraphCenter – выравнивание по центру
wdAlignParagraphJustify – выравнивание по левому краю

вставка в текст конкретного предложения
Selection.TypeText Text:="Пример работы с текстом"
вставка новой пустой строки
Selection.TypeParagraph
установка размера букв
Selection.Font.Size = 14

Одним из элементов оформления диалоговых окон является элемент управления Image (рисунок). Его основные свойства:

Autosize – изменяет размер рисунка на форме (автоматически или нет);

Picture – отображает графический файл, выводимый на форму;

pictureSizeMode – устанавливает масштабирование рисунка (не весь рисунок, вся поверхность объекта, целиком внутри объекта);

PictureAligment – устанавливает расположение рисунка внутри объекта (слева, справа, вверху, внизу);
pictureTilling – покрывает объект мозаикой из рисунка.

Данные свойства либо устанавливаются в окне свойств объекта, либо прописываются в листинге.

Примечание. При работе данного приложения все значения полей ввода должны быть числовыми. В VBA есть специальная функция для проверки того, является или нет введенная строка записью числа – IsNumeric. Для проверки отличия от нуля значений в последних двух полях ввода используется функция Val, которая переводит строковое выражение в числовое, если это строковое выражение содержит в своем начале цифры (или все состоит из них).

Функция Str делает преобразование, обратное тому, что производит Val, – конвертирует числовое значение выражения в строковое, что позволяет этому значению в дальнейшем обрабатываться как строке.

Таким образом, функции Val и Str преобразуют типы данных обрабатываемых ими переменных, соответственно, из строкового в числовой и из числового в строковый.

Создание кнопки или панели в Word

Назначить форме кнопку или пункт меню для непосредственного вызова приложения из Word нельзя – это можно сделать только для модулей. Поэтому нужно применить следующий способ. Создайте макрос (Меню + Insert + Module) в открытом проекте:

Переименуйте этот макрос по своему усмотрению, например Teplo. И выполните следующие действия:

1. Щелкните правой кнопкой мыши в любом месте панели инструментов.

2. В этом меню выберите команду Настройка (или Сервис + Настройка).

3. В диалоговом окне Настройка щелкните на ярлыке вкладки Команды.

4. Прокрутите список Категории вниз и найдите пункт Макросы. Выберите этот пункт. В списке «Сохранить в» выберите имя вашего документа, в котором создан макрос.

5. В правом окне найдите необходимый макрос (либо VBA-программу).

6. Перетащите имя этого макроса или программы на панель инструментов.

7. Создайте соответствующую надпись кнопки и, если нужно, рисунок (при помощи правой кнопки мыши).

8. Закройте диалоговое окно Настройка, чтобы завершить работу.

9. В результате будет создана кнопка запуска приложения.

Лабораторная работа №5

Дата добавления: 2015-11-05 ; просмотров: 4930 | Нарушение авторских прав

Комментировать
843 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector