Vba выравнивание текста word

Обновлено: 08.07.2024

Вопрос № 2
Допустим поле имеет такую формулу:
="Text1 " & [Field1] & " " & [Field2] & " Text2"
Как сделать так, чтобы значение [Field2] было отмечено жирным шрифтом, тогда как остальная часть текста обычным шрифтом?

P.S.
Многие из Вас сразу же захочет ответить "Это невозможно". Но вдруг какому то умельцу всё-таки удалось решить эту проблему?

Конечно можно предложить так: необходимо создать 3 поля вместо 1 и назначить им формулы ="Text1 " & [Field1] & " ", =[Field2], =" Text2" . У 1 и 3 поля – обычный шрифт, а 2 поля – жирный шрифт. Но здесь проблема: ширина текста для [Field1] – не зафиксирована, она произвольная. Так что часть текста может оказаться позади поля № 2. Если же оставить достаточно большое пространство, то очень часто между полями №1 и №2 окажется пустота. А это недопустимо в официальных документах.
Что я сам думаю, может быть с помощью VBA каким-то Макаром можно измерить длину текста и в зависимости от длину сдвинуть туда сюда поле №2 и поле №3. Но и здесь проблема: если значение поле №1 не умещается в одну строчку, то сложно перемещать поля №2 и №3. Ведь речь идёт об области данных отчёта (Details), где для следующей записи следует вернуть местонахождение полей. Как быть?

Вопрос № 3
В области данных (Details) отчёта имеются поля со свойством "Расширение" (CanGrow) = Да (True). В тоже время все поля "Тип границы" (BorderStyle) = Сплошная (Thin). Если текст хотя бы одного поля не умещается в одно строку, то его высота увеличивается для данной записи, а вот остальные поля остаются неизменными. Как сделать так, чтобы высота всех полей была бы одинаковая (если границы полей по высоте не одинаковые, то Вы сами знаете как "некрасиво" получится отчёт)? Пробовал колдовать над событием "Форматирование" (OnFormat), но что-то у меня не получается. Может кто то оригинально решил подобную проблему?

Вопросы 1-2-3 я решила формированием отчета в НТМ с открытием для печати(и возможной доводки ) в WORD.

Эх, в том то и дела, нельзя мне в Word! Документы по контрактам как раз таки конфиденциальные, их не в коем случае нельзя дать скопировать пользователям.

почти любой аксесс-отчет можно преобразовать в ворд(хотя и не так красиво как через НТМ)

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

За №3 и №4 не просто "СПАСИБО. ", а "ОГРОМНОЕ СПАСИБО. ". Просто класс.

Задает способ выравнивания текста в элементе управления.

Синтаксис

объект. TextAlign [= fmTextAlign ]

Синтаксис свойства TextAlign содержит следующие элементы:

Part Описание
object Обязательный. Допустимый объект.
fmTextAlign Необязательное. Способ выравнивания текста в элементе управления.

Параметры

Константа Значение Описание
fmTextAlignLeft 1 Выравнивает первый символ отображаемого текста по левому краю отображаемой области или области редактирования (по умолчанию) элемента управления.
fmTextAlignCenter 2 Центрирует текст в отображаемой области или в области редактирования элемента управления.
fmTextAlignRight 3 Выравнивает последний символ отображаемого текста по правому краю отображаемой области или области редактирования элемента управления.

Примечания

Для comboBox свойство TextAlign влияет только на область редактирования; это свойство не влияет на выравнивание текста в списке.

В изолированных метках свойство TextAlign определяет выравнивание подписи метки.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Текстовое поле на пользовательской форме

Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.

Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.

Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.

Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.

Свойства текстового поля

Свойство Описание
AutoSize* Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height.
AutoTab Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена.
ControlSource Ссылка на источник данных для поля TextBox.
ControlTipText Текст всплывающей подсказки при наведении курсора на TextBox.
Enabled Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым).
Font Шрифт, начертание и размер текста в поле.
Height Высота текстового поля.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля.
Locked Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены.
MaxLenght Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет.
Multiline Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста.
PasswordChar Задает символ, который будет отображаться при вводе знаков пароля.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Text** Текстовое содержимое (значение) поля (=Value).
TextAlign Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля.
Value** Текстовое содержимое (значение) поля (=Text).
Visible Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт.
Width Ширина текстового поля.
WordWrap Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен.

* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.

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

Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.

Привязка текстового поля к ячейке

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

1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:

Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office.

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

Например, можно автоматизировать обработку содержимого ячеек в Excel или ускорить исправление ошибок оформления документов в Word. Написание макросов для Excel пользуется популярностью у продвинутых пользователей Microsoft Office. Кому-то удается научиться этому самостоятельно, а кто-то записывается на курсы Excel в Алматы или в своем городе.

Созданные программы на языке VBA называются макросами.

Попробуем создать простой макрос обработки текста в Word.

Для начала стоит понять какая последовательность действий прописывается в макрос с помощью макрорекордера (инструмент для записи ваших действий с помощью кода VBA).

Для примера найдем все точки в тексте и заменим их на запятые. Заходим на вкладку Разработчик -> Код -> Запись макроса.

Теперь перейдем на вкладку Главная -> Редактирование -> Заменить. Вводим «.» в поле Найти и «,» в поле Заменить на. Жмем Заменить все.

Теперь останавливаем запись макрорекордера командой Разработчик -> Код -> Остановить запись.

Это все! Ваш первый макрос готов. Давайте же посмотрим на него. Заходим Разработчик -> Код -> Visual Basic. В окне редактирования кода появится такая штука:

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

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

Для поискомого и заменяемого текста в макросе используются следующие строки

Использованные конструкции регулярных выражений приведены в таблице.

Теперь необходимо все это оформить в компактном виде. Для этого удобно создать пару массивов и загнать все в цикл.

В итоге получим:

Полученный макрос сохраняем вместе с документом. Вызвать макрос можно из меню Разработчик или с помощью назначенной комбинации горячих клавиш (Файл -> Параметры -> Настройка ленты -> Сочетания клавиш: Настройка…)

параметры абзаца - Коллекция Paragraphs и объект Paragraph

Стоит обратить внимание, что большая часть свойств и методов являются идентичными. Так, если мы используем некоторое свойство, работая с коллекцией, то оно будет влиять на все основные параметры абзаца в Word, если свойство или метод используются только для конкретного объекта Paragraph, то обрабатываться будет параметр конкретного абзаца. В самой статье я приведу примеры программного кода для сценариев сервера Windows Script Host – VBScript и JScript.

И так, давайте приступим…

Paragraph и Paragraphs – основные параметры абзаца в Word

Как и большинство коллекций и объектов модели Word, коллекция Paragraphs содержит все объекты Paragraph. Прежде чем приступать к обработке абзацев, нужно сначала получить ссылку на коллекцию Paragraphs, это можно сделать с помощью одноименно свойства класса Selection (смотрите статью "Объект Word Selection - выделить весь текст в ворде, свойства") или класса Range (статья "Объект Word Range - Выбор текста"). Также стоит учитывать, что коллекция будет содержать те параграфы, которые входят в выделенный или выбранный диапазон текста.

Общие свойства – параметры форматирования абзацев

основные настройки параметров абзацев

Alignment - Позволяет задать или получить значение константы WdParagraphAlignment, которая отвечает за выравнивание текста:

  • wdAlignParagraphLeft - 0 – По левому краю.
  • wdAlignParagraphCenter - 1 – По центру.
  • wdAlignParagraphRight - 2 - По правому краю.
  • wdAlignParagraphJustify - 3 – По ширине.
  • wdAlignParagraphDistribute - 4 – Распределяет символы так, что бы заполнить по ширине все окно.
  • wdAlignParagraphJustifyMed - 5 - По ширине со средней степенью сжатия символов.
  • wdAlignParagraphJustifyHi - 7 - По ширине с высокой степенью сжатия символов.
  • wdAlignParagraphJustifyLow - 8 - По ширине с низкой степенью сжатия символов.

CharacterUnitFirstLineIndent – Задает или возвращает отступ первой строки.

CharacterUnitLeftIndent – Выступ слева

CharacterUnitRightIndent – Отступ справа

FirstLineIndent - Возвращает или устанавливает значение (в пунктах) для первой линии или отступа.

LeftIndent – Отступ слева в пунктах.

RightIndent – Отступ справа в пунктах.

LineSpacing – Междустрочный интервал.

LineSpacingRule - Возвращает или устанавливает междустрочный интервал, который определяет значение константы WdLineSpacing:

  • wdLineSpaceSingle - 0 – одинарный, по умолчанию
  • wdLineSpace1pt5 - 1 – 1,5 строки.
  • wdLineSpaceDouble - 2 – двойной.
  • wdLineSpaceAtLeast - 3 – минимум.
  • wdLineSpaceExactly - 4 – точно.
  • wdLineSpaceMultiple - 5 - междустрочный интервал определяется количеством линий указано.

LineUnitAfter – Интервал после параграфа.

LineUnitBefore – Интервал перед параграфом.

ReadingOrder - Возвращает или устанавливает такие основные параметры форматирования для абзаца, как порядок чтения без изменения их выравнивания. Содержит значение константы WdReadingOrder:

  • wdReadingOrderLtr - 1 – Слева направо
  • wdReadingOrderRtl - 0 – Справа налево

SpaceAfter – Интервал в пунктах после параграфа.

SpaceBefore - Интервал в пунктах перед параграфом.

Style - Возвращает или задает такие настройки параметров абзаца, как стиль. Свойство принимает имя стиля, или значение константы WdBuiltinStyle.

Общие методы – настройка параметров абзаца

задаем параметры абзацев в документе word

Indent () – Позволяет добавить отступ на один пункт.

Outdent () - Позволяет удалить отступ на один пункт.

IndentCharWidth (count) – Добавляет отступ на заданное количество символов.

IndentFirstLineCharWidth (count) - Отступ первой строки на заданное количество символов.

Reset () - Удаляет ручное форматирование – не влияет на форматирование стиля.

TabHangingIndent (count) - Устанавливает висячий отступ на заданное значение.

TabIndent (count) - Устанавливает отступ слева на заданное значение.

OpenOrCloseUp () – Вставляет или удаляет интервал в 12 пунктов перед указанным абзацем.

OpenUP () – Вставляет интервал в 12 пунктов перед указанным параграфом.

CloseUP () – Удаляет интервал в 12 пунктов перед указанным параграфом.

OutlineDemote () и OutlinePromote () – Применяют стиль Заголовок к указанному параграфу.

OutlineDemoteToBody () – Применяет нормальный стиль.

Space1 () - Одинарный междустрочный интервал.

Space15 () – Междустрочный интервал в 1.5 строки.

Space2 () – Двойной междустрочный интервал.

Свойство и методы коллекции Paragraps – основные параметры абзаца

параметры форматирования в Word абзаца

Count – Содержит количество параграфов в документе. Только чтение.

Item (count) – Позволяет получить доступ к указанному абзацу в коллекции, вернет объект Paragraph.

Add () - Возвращает объект Paragraph, который представляет параметры форматирования нового абзаца, который является пустым, добавленным в документ.

DecreaseSpacing () - Уменьшает отступ между параграфами на 6 пунктов.

IncreaseSpacing () - Увеличивает отступ между параграфами на 6 пунктов.

Методы объекта Paragraph – параметры форматирования абзацев

настройка в Word параметра абзацов

Next (count) - Возвращает объект Paragraph, представляющий основные параметры следующего абзаца в Word.

Previous (count) - Возвращает объект Paragraph, представляющий основные параметры предыдущего абзаца в Word.

И так, с теоретической частью мы закончили, теперь можно приступить к программированию. Рассмотрим два простых примера на языке VBScript и JScript, я сначала приведу программный код, а уже в конце дам пояснения.

Пример на языке программирования VBScript:

Пример на языке программирования JScript:

Хорошо, теорию разобрали, программированием занялись, теперь надо дать пояснения к сценариям:

Объявление переменных – в самом начале мы объявляем переменные, в языке vbscript это делается в блоке dim , а в языке программирования jscript – в блоке var . Обратите внимание, что в vbs мы включили проверку переменных с помощью оператора Option Explicit . Сами имена переменных отличаются, так, для JS скрипта я приписал единицу.

Подключение внешних классов – Далее происходит процесс создания ссылок на внешние классы, которые позволяют создать новый документ, задавать параметры форматирования абзацев, управлять вставкой текста и так далее. Обратите внимание, что для vbs мы использовали ключевое слово set .

Вставка содержимого – В цикле for (смотрите синтаксис для vbscript - "Урок 6 по VBScript: Циклы for…next и for each…next" и jscript - "Урок 9 по JScript - оператор цикла for") происходит вставка несколько раз содержимого переменной MyText параллельно с параграфом.

Настройка параметров абзаца – Тут снова используется цикл for, в котором в заданном порядке происходит форматирование – меняется интервал, выравнивание и так далее. Обратите внимание, что в vbs сценарии мы получили доступ к параграфам через Selection , а в js – через Range .

Спасибо за внимание. Автор блога Владимир Баталий

Читайте также: