Vba скрыть текст в word

Обновлено: 02.07.2024

Методы класса Word.Selection – выделение текста в Word

Я приведу по два примера программного кода на языках JScript, VBScript и VBA. Хотя по сути, код под макрос (VBA) и сценарий VBScript особо не отличается. Для тех, кто забыл: для создания макроса в документе Microsoft Office нужно вызвать редактор Visual Basic for Application (комбинация клавиш Alt + F11), далее, добавить в проект новый модуль (макрос).

Методы с префиксом Clear… позволяют очистить выделенный материал от форматирования (абзацы, стили, символы и так далее):

ClearCharacterAllFormatting () - Все форматирование.

ClearCharacterDirectFormatting () - Форматирование знаков.

ClearCharacterStyle () - Форматирование знаков, применяемых через стили.

ClearFormatting () – Все форматирования (параграфы, стили и так далее).

ClearParagraphAllFormatting () - Форматирование абзаца.

ClearParagraphDirectFormatting () - Форматирование абзацев, применяемых вручную.

ClearParagraphStyle () - Форматирование абзацев, применяемых через стили.

Collapse (Direction) – Позволяет убрать выделение текста Word и переместить указатель в начало или конец. VBA Selection. Если параметры отсутствуют, то просто убирается выделение. Параметр Direction содержит значение константы WdCollapseDirection :

  • wdCollapseEnd - 0 – Указатель вконец
  • wdCollapseStart - 1 – Указатель вначале

ConvertToTable (Separator, NumRows, NumColumns, InitialColumnWidth, Format, ApplyBorders, ApplyShading, ApplyFont, ApplyColor, ApplyHeadingRows, ApplyLastRow, ApplyFirstColumn, ApplyLastColumn, AutoFit, AutoFitBehavior, DefaultTableBehavior) – Довольно мощный метод, который позволяет преобразовать выделенный Word текст в таблицу.

Separator - Символ-разделитель, может быть знаком или значением константы WdTableFieldSeparator:

  • wdSeparateByParagraphs - 0 - абзаца.
  • wdSeparateByTabs - 1 - табуляции.
  • wdSeparateByCommas - 2 - запятая.
  • wdSeparateByDefaultListSeparator - 3 - разделитель списка по умолчанию.

NumRows - Количество строк.

NumColumns - Количество столбиков.

InitialColumnWidth - Начальная ширина каждого столбца, в пунктах.

Format – Определяет формат таблицы и содержит значение константы WdTableFormat.

ApplyBorders - TRUE - применять границы.

ApplyShading - TRUE - применить затенение.

ApplyFont - TRUE применять свойства шрифтов.

ApplyColor - TRUE применять цветовые свойства.

ApplyHeadingRows - TRUE - применить свойства заголовок-строка.

ApplyLastRow - TRUE - применить свойства последней строке.

ApplyFirstColumn - TRUE - применить свойства первого столбцов.

ApplyLastColumn - TRUE - применить свойства последнего столбца.

AutoFit - TRUE - уменьшить ширину столбцов таблицы как можно больше.

AutoFitBehavior - Устанавливает правила авто-подбора (если DefaultTableBehavior содержит значение wdWord8TableBehavior, то этот аргумент игнорируется, VBA Selection), содержит значения константы WdAutoFitBehavior:

  • wdAutoFitContent - 1 - автоматически размер
  • wdAutoFitFixed - 0 - фиксированный размер
  • wdAutoFitWindow - 2 - автоматический размер по ширине активного окна

DefaultTableBehavior - Значение, указывающее, следует ли автоматически изменять размер ячеек таблицы по содержимому. Selection VBA. Содержит значение константы WdDefaultTableBehavior:

  • wdWord8TableBehavior - 0 - отключает Авто-подбор (по умолчанию)
  • wdWord9TableBehavior - 1 - включить Авто-подбор

Выделение блока текста в Word, VBA Selection

Хорошо, с теоретической частью мы закончили, теперь можно приступить к программированию.

Примера на языке VBScript – выделение текста в редакторе Word

В данном примере в цикле For (смотрите статью "Урок 6 по VBScript: Циклы for…next и for each…next"), который выполняется шесть раз, происходит вставка перевода на новую строку, вставка текстовой фразы и перемещаем курсов к конец строки. С помощью оператора with мы можем экономить размер программного кода – не нужно лишний раз писать имя класса. Вконце происходит выделение текста Word и преобразование его в таблицу.

Примера на языке JScript – выделение текста в редакторе Word

Логика работы данного программного кода аналогичны предыдущему примеру, тут мы уже использовали цикл for языка JS, читайте в статье "Урок 9 по JScript - оператор цикла for". Тут тоже использовался оператор with, обратите внимание, что имена переменных изменились, а в конце каждой строки кода прописана точка с запятой.

Примера на языке Visual Basic for Application – выделение текста в редакторе Word

Хорошо, давайте продолжим рассматривать методы класса Selection.

выделение текста в редакторе Word, Selection VBA

EndOf () – Перемещает курсор в конец выделения.

StartOf () – Перемещает курсор в начало выделения.

SetRange (start, end) – Позволяет задать начальное и конечное значение для выделения текста Word.

TypeText () – Выполняет ту же функцию, что и свойство Text – ввод информации.

TypeParagraph () - Метод вставляет параграф.

Copy (), Cut (), Paste (), Delete () – Копирует, вырезает, вставляет и удаляет выделенный текст в Word.

CopyAsPicture () – Копирует выбранный материал как изображение.

И так, теперь рассмотрим программный код с данными методами.

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

Ну и в заключение, привожу программный код для макроса:

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

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

Форматирование таблиц в WORD
Есть форматирование таблиц в Word, не знаю как избавится от ошибки 5991 "отсутствует доступ к.

Word: макрос для таблиц. Отформатировать определенный вид таблиц
В документе два вида таблиц. Первый тип таблиц имеет вертикальную шапку сбоку (левый столбец) и.

Форматирование таблиц Excel
Здравствуйте, необходимо отформатировать таблицы ( написать макросы ) для нескольких примеров в.

Одновременное форматирование таблиц в одном документе
Здравствуйте. У меня в одном документе ворд много таблиц, причем их форматирование отличается от.

faiza,
т.е. колонтитулы вообще не нужны и нумерация страниц тоже не нужна?

Не нужны. Главное, чтобы всё влезло на одну страницу.

Добавлено через 5 минут
Пожалуйста, помогите мне. Нужно в ближайшие 3 часа. Я в долгу не останусь. Можно ещё удалить строки в таблицах с нумерацией колонок и удалить строки, где "руководитель. подпись. ", оставить только после 5й таблицы.

faiza,
левое поле 3 см - это для чего-то нужно (для брошюровки)? Правое 1,5 см - это тоже для чего-то нужно?
И какой Word 2003 или др.?

Добавлено через 2 часа 12 минут
faiza,
вот макрос. Затем надо будет в нескольких местах удалить двойные энтеры и в ячейках таблиц убрать энтеры, чтобы текст занимал меньше строк.

Спасаибо огромное. Всё работает как надо. Как я могу отблагодарить.

Добавлено через 47 минут
Можно ещё, чтобы данные в таблицах были шрифта 8 жирного, а всё остальное - 6. И отступ сверху 2 см, т.к. документ подшивается.

Добавлено через 38 минут
И ещё, чтобы номер в названии(самая первая строка) был тоже 8 шрифтом. Спасибо большое.

Добавлено через 2 минуты
Word 2007. А по поводу левого и правого поля не принципиально. Не важно сколько будет отступ, лишь бы всё уместилось на одной странице.

faiza,
из-за верхнего поля шрифт пришлось уменьшать до 7 пт:
По поводу отблагодарить. Если макрос действительно помог, то можешь выслать мне денег на мой кошелёк. А можешь просто отписаться, помог макрос или нет. Или скажи "Спасибо". При выполнении выдаёт ошибку:"Отсутствует доступ к отдельным строкам, поскольку таблица имеет ячейки, объединённые по вертикали". Что делать. Напиши как и куда закинуть "благодарность" ))) Просто мне же за это платят, а я не сама сделала, так что эти деньги должны быть в заслуженном кошельке))))

faiza,
да, я понял ошибку, получается, что файлы отличаются между собой. В этом случае надо придумать что-то другое, но я бухой сейчас, поэтому тяжело сообразить.
Раз я не смог помочь тебе, то мне не нужна благодарность.
Есть вариант - удаление строк в таблицах с нумерацией колонок вручную, т.е. вывести на панель инструментов кнопку по удалению строк таблиц. Для этого надо вставить в таблицу курсор, а затем применить макрос.

Добавлено через 23 часа 32 минуты
faiza,
вот так можно удалить скрытый текст:

Для того, чтобы скрыть часть текста в Word, не удаляя его, можно пойти двумя путями.

1. Можно использоваться специальное свойства шрифта, называемое Hidden. Для активации этой опции достаточно выделить текст, открыть свойства шрифта и установить соответствующий флажок:

Hiddent font

Флажок для сокрытия текста

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

Код на VBA, который позволяет скрыть текст таким образом, приведен ниже:

Selection.Range.Font.Hidden = True

2. Второй способ позволяет скрыть текст в любом режиме просмотра, правда, для этого его придется положить в объект Shape:

Dim oShape As Word.Shape
Dim iLeft, iTop, iWidth, iHeight As Integer

iLeft = 1
iTop = 1
iWidth = 80
iHeight = 20

Set oShape = ActiveDocument.Shapes.AddTextbox( _
msoTextOrientationHorizontal, iLeft, iTop, iWidth, iHeight)

With oShape
.Line.Visible = False
.Fill.Visible = False
.TextFrame.TextRange.ParagraphFormat.Alignment = wdAlignParagraphCenter
.WrapFormat.Type = wdWrapInline
.TextFrame.TextRange.Text = "Hello, World"
End With

У объекта Shape есть свойство Visible. Устанавливая его в нужное значение мы можем показывать или скрывать эту форму:

Sub Hide()
Dim oShape As Word.Shape
Set oShape = ActiveDocument.Shapes(1)
oShape.Visible = msoFalse
End Sub

Sub Show()
Dim oShape As Word.Shape
Set oShape = ActiveDocument.Shapes(1)
oShape.Visible = msoTrue
End Sub

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

Set oShape = ActiveDocument.Shapes.AddTextbox( _
msoTextOrientationHorizontal, iLeft, iTop, iWidth, iHeight, _
ActiveDocument.Tables(1).Cell(1, 1).Range)

Shape в ячейке таблицы

Форма с текстом расположена в левой верхней ячейке таблицы

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

В Visual Basic методы изменения файлов являются методами объекта Document или коллекции документов. В этом разделе Visual Basic примеры, связанные с задачами, которые определены в следующих разделах.

Создание нового документа

Коллекция документов включает все открытые документы. Чтобы создать новый документ, используйте метод Add для добавления объекта Document в коллекцию Документов. Следующая инструкция создает документ.

Лучший способ создания документа — назначить возвращаемую величину переменной объекта. Метод Add возвращает объект Document, который ссылается на новый документ. В следующем примере объект Document, возвращаемый методом Add, назначен переменной объекта. Затем за набором нескольких свойств и методов объекта Document. Вы можете легко управлять новым документом с помощью переменной объекта.

Открытие документа

Чтобы открыть существующий документ, используйте метод Open с коллекцией Документов. Следующая инструкция открывает документ с именем Sample.doc, расположенный в папке MyFolder.

Сохранение существующего документа

Чтобы сохранить один документ, используйте метод Сохранить с объектом Document. Следующая инструкция сохраняет документ с именем Sales.doc.

Все открытые документы можно сохранить, применяя метод Сохранить в коллекции Документов. Следующая инструкция сохраняет все открытые документы.

Сохранение нового документа

Чтобы сохранить один документ, используйте метод SaveAs2 с объектом Document. Следующая инструкция сохраняет активный документ как "Temp.doc" в текущей папке.

Аргумент FileName может включать только имя файла или полный путь (например, "C:\Documents\Temporary File.doc").

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

Чтобы закрыть один документ, используйте метод Close с объектом Document. Следующая инструкция закрывает и сохраняет документ с именем Sales.doc.

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

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

Активация документа

Чтобы изменить активный документ, используйте метод Активация с объектом Document. Следующая инструкция активирует открытый документ с именем Sales.doc.

Определение открытого документа

Чтобы определить, открыт ли документ, вы можете привести коллекцию документов с помощью . Следующее утверждение. В следующем примере активируется документ с именем Sample.doc если документ открыт или открывается Sample.doc если он не открыт в настоящее время.

Ссылаясь на активный документ

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

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

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