Макрос word выделить весь документ

Здравствуйте дорогие читатели блога scriptcoding.ru. Сегодня мы рассмотрим свойства объекта Selection, который позволяет программно выделить весть текст в Ворде.

Помним, что бы вручную выделить весть текст в Ворд , достаточно нажать комбинацию клавиш «Ctr + A«. Мы рассмотрим некоторые свойства объекта Word.Selection. Говорю «некоторые«, так как большинство используются редко, в случае чего – документация MSDN всегда под рукой. И так, сам объект Selection выполняет двойную функцию – с одной стороны он позволяет вставлять фразу в только что созданный документ, с другой стороны – позволяет обрабатывать выделение всего текста в ворде. Описание методов класса Selection можно просмотреть тут и тут.

Свойства класса Word.Selection – выделить весь текст в Ворде

В конце статьи я приведу три примера программного кода – два под Windows Script Host (язык VBScript и JScript) и один под Visual Basic for Application.

И так, сначала давайте познакомимся со свойствами:

Start и End – Если текст уже выделен, то Start и End будут содержать начальную и конечную позиции выделения. Так как они доступны и для записи, то можно задать диапазон для выделения всего текста в ворде.

Flags – Позволяет установить или получить параметры выбора. Flags может быть установлено в одной из следующих констант wdSelectionFlags:

  • wdSelActive — 8 — активное выделение.
  • wdSelAtEOL — 2 – конец строки.
  • wdSelOvertype — 4 – замена символов.
  • wdSelReplace — 16 — выбор был заменен.
  • wdSelStartActive — 1 — начало активного документа.

Само свойство возвращает сумму констант wdSelectionFlags.

Information(Type) — Получить информацию относительно выделения или заданного диапазона. Только чтение. Параметр Type содержит значения константы wdInformation (я указал только основные значения):

  • wdActiveEndAdjustedPageNumber – 1 — Номер страницы.
  • wdActiveEndSectionNumber – 2 — Количество разделов.
  • wdActiveEndPageNumber – 3 – Номер страницы начиная с начала.
  • wdNumberOfPagesInDocument – 4 – Количество страниц в документе
  • wdHorizontalPositionRelativeToPage – 5 — Горизонтальная позиция от левого края выделения к левому краю страницы в пунктах.
  • wdVerticalPositionRelativeToPage – 6 – Вертикальная позиция от верхнего края выделения к верхнему краю страницы в пунктах.
  • wdFirstCharacterColumnNumber – 9- Позиция первого слова в выделении начиная с начала документа.
  • wdFirstCharacterLineNumber – 10 – Позиция строки, с которой начинается выделение, начиная с начала.
  • wdFrameIsSelected – 11 – TRUE, если выделен весть текст в ворде.
  • wdZoomPercentage — 19 – Масштаб в процентах
  • wdCapsLock – 21 – TRUE если включен CapsLock.
  • wdNumLock — 22 – TRUE если включен NumLock.
  • wdRevisionMarking – 24 — Возвращает True, если отслеживание изменений в силу.

Все константы будут содержать значение -1, если информация выходит за пределы допустимой области.

IPAtEndOfLine —True — указатель ввода расположен в конце строки (в крайнем правом положении при выравнивании).

NoProofing — Отменяет (значение TRUE) для выбранного фрагмента проверку орфографии и грамматики.

StoryType – Возвращает тип истории для указанного выбора (только чтение). Константа WdStoryType:

  • wdCommentsStory — 4 – Комментарии.
  • wdEndnoteContinuationNoticeStory — 17 — Сноска продолжения уведомления.
  • wdEndnoteContinuationSeparatorStory — 16 – Сноска продолжения разделителя.
  • wdEndnoteSeparatorStory — 15 — Сноска разделитель.
  • wdEndnotesStory — 3 – Примечания.
  • wdEvenPagesFooterStory — 8 — Четные страницы футера.
  • wdEvenPagesHeaderStory — 6 — Четные страницы заголовка.
  • wdFirstPageFooterStory — 11 –Первый футер страницы.
  • wdFirstPageHeaderStory — 10 – Первый заголовок страницы.
  • wdFootnoteContinuationNoticeStory — 14 — Сноска продолжения уведомления.
  • wdFootnoteContinuationSeparatorStory — 13 — Сноска продолжения разделителя.
  • wdFootnoteSeparatorStory — 12 — Сноска разделитель.
  • wdFootnotesStory — 2 – Сноски.
  • wdMainTextStory — 1 — Основной текст.
  • wdPrimaryFooterStory — 9 — Первичный футер.
  • wdPrimaryHeaderStory — 7 — Первичный заголовок.
  • wdTextFrameStory — 5 — Текст рамки.

Text – Получить или указать материал, который будет вставлен на месте выделения, или просто там, где расположен курсор. Чтение/Запись

Type – Возвращает тип выделения, константа WdSelectionType:

  • wdNoSelection — 0 – Отсутствует.
  • wdSelectionBlock — 6 – Блок.
  • wdSelectionColumn — 4 – Столбец.
  • wdSelectionFrame — 3 – Рамка.
  • wdSelectionInlineShape — 7 – Рядовая форма.
  • wdSelectionIP — 1 – Пункт.
  • wdSelectionNormal — 2 – Нормальный.
  • wdSelectionRow — 5 – Строка.
  • wdSelectionShape — 8 – Форма.

Начинаем программировать – выделить весь текст в ворде

выделение всего текста в документе ворд

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

Пример на языке VBScript:

' ----------------------------------------------------------------------------
' Класс Word Selection
' Создание, ввод и выбор
' выделение текста в ворде
' Selection.vbs
' ----------------------------------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, SelText, MyText, i, SEnd, SStart
 
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add()
Set oSel = oWord.Selection
oWord.Visible = True
 
MyText="Пример работы с объектом Word Selection в VBScript, выделение всего текста в ворде "
 
' вставляем в документ фразу сто раз
For i = 0 To 100
  oSel.Text = MyText
  ' Перемещаем курсор в конец содержимого
  oSel.EndOf
Next
 
' Выделяем весь текст в ворде
oWord.Documents(1).Select
' задержка в пять секунд
WScript.Sleep 5000
 
With oSel
     ' Определяем позиции
     SStart = oSel.Start
     SEnd = oSel.End
 
     ' Перемещаем курсор в конец
     .EndOf
     .Text = SStart & "  " & SEnd
     .EndOf
 
     ' Выделяем заданный диапазон                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
     .Start= SStart +400
     .End= SEnd -400
 
     ' задержка в пять секунд
     WScript.Sleep 5000
 
     ' Отменяем проверку
     .NoProofing = true
 
     ' Выводим значения                                                                                                                                                                                                                                                                                                                                                                                                                                                                           выделить весь текст в документе ворд
     MsgBox "Information - " & .Information(19) & vbCrLf &_
                 "StoryType - " & .StoryType & vbCrLf &_
                 "Type - " & .Type & vbCrLf &_
                 "IPAtEndOfLine - " & .IPAtEndOfLine
End With

Пример на языке JScript:

// ----------------------------------------------------------------------------
// Объект Word Selection
// Создание, ввод и выбор
// выделение текста в ворде
// Selection.js
// ----------------------------------------------------------------------------
var oWord1, oDoc1, oSel, MyText, i, SEnd, SStart;
 
oWord1 = WScript.CreateObject("Word.Application");
oDoc1 = oWord1.Documents;
oDoc1.Add();
oSel = oWord1.Selection;
oWord1.Visible = true;
 
MyText="Пример работы с объектом Word Selection в JScript, выделение всего текста в ворде "
 
// вставляем в документ фразу сто раз
for(i=0; i<=100; i++){
  oSel.Text = MyText;
  // Перемещаем курсор в конец текста                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  oSel.EndOf();
}
 
// Выделяем весь текст в ворд
oWord1.Documents(1).Select();
// задержка в пять секунд
WScript.Sleep(5000);
 
with (oSel){
     // Определяем позиции
     SStart = Start;
     SEnd = End;
 
     // Перемещаем курсор в конец
     EndOf();
     Text = SStart + "  " + SEnd;
     EndOf();
 
     // Выбираем заданный диапазон                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             выделить весь текст в документе ворд
     Start= SStart + 400;
     End= SEnd - 400;
 
     // задержка в пять секунд
     WScript.Sleep(5000);
 
     // Отменяем проверку текста
     NoProofing = true;
 
     // Выводим значения
     WScript.Echo ("Information - " + Information(19) +  "nStoryType - " + StoryType + "nType - " + Type + "nIPAtEndOfLine - " + IPAtEndOfLine)
}

выделить весь текст в документе ворд

Пример под Visual Basic for Application:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Sub Module2()
    Dim oWord2 As Object
    Dim oDocument As Object
    Dim oSel As Object
 
    Set oWord2 = CreateObject("Word.Application")
    oWord2.Visible = True
    Set oDocument = oWord2.Documents.Add
    Set oSel = oWord2.Selection
 
    MyText = "Пример работы с объектом Word Selection в Visual Basic for Application - выделить весь текст в ворде "
 
     With oSel
                 For i = 0 To 100
                            .Text = MyText
                            .EndOf
                 Next
                 oWord2.Documents(1).Select
                 Sleep 3000
 
                 SStart = .Start
                 SEnd = .End
 
                 .EndOf
                 .Text = SStart & "  " & SEnd
                 .EndOf
 
                 .Start = SStart + 400
                 .End = SEnd - 400                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ' выделить весь текст в документе ворд
 
                 Sleep 3000
 
                 .NoProofing = True
     End With
End Sub

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

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Дело в том, что функция Sleep (смотрите статью «Объект WScript — методы sleep, quit и echo и 8 свойств») доступна только в сценариях VBS и JS, что бы сделать задержку для макроса, мне пришлось обратиться к системной функции Windows. Для вставки материала в документ используется цикл for, его смотрите описание синтаксиса для JScript — «Урок 9 по JScript — оператор цикла for» и для VBScript — «Урок 6 по VBScript: Циклы for…next и for each…next«. В остальном коде я думаю, разобраться несложно, если есть вопросы, задавайте, буду рад ответить.

Помогаю со студенческими работами здесь

Выделение всего текста в TextBox
Блин, совсем я что-то.
Нужно выделить текст в текстбоксе, т.е. вызвать двойной клик
В ричтексте…

Поиск заданного текста в документе Word
Уважаемые форумчане. Подскажите пожалуйста решение такой проблемы в Делфи:
Пытаюсь создать…

Удаление совпадений текста в документе MS Word
на форме текстовое поле, и кнопка. есть уже созданный файл Word (docx)(путь к файлу word берется из…

Поиск раскрашенного текста в документе Word
Привет всем!

Подскажите, пожалуйста, каким образом средствами VBA в открытом документе Word…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

Содержание

  • VBA PDF (бесплатные загрузки)
  • Примеры Word VBA «Шпаргалка»
  • Учебное пособие по макросам Word VBA
  • Пример простого макроса Word
  • Объект документа Word
  • Документы
  • Диапазон, выделение, абзацы
  • Примеры макросов Word

Добро пожаловать в наше мега-руководство по Word VBA / макросам!

Эта страница содержит:

    1. Учебное пособие по Word VBA в формате PDF (бесплатная загрузка)
    2. Word VBA «Шпаргалка», содержащая список наиболее часто используемых фрагментов кода Word VBA.
    3. Полное руководство по Word VBA / Macro.
    4. Список всех наших руководств по макросам Word VBA с возможностью поиска

Возможно, вас заинтересует наше интерактивное руководство по VBA для Excel. Хотя некоторые из примеров / упражнений относятся к Excel VBA, большая часть содержимого является общим для всех VBA, и вам может быть полезно изучить такие концепции, как If, Loops, MessageBoxes и т. Д.

VBA PDF (бесплатные загрузки)

Загрузите наше бесплатное руководство по Microsoft Word VBA! Или учебники VBA для других программ Office!

Скачать

Ниже вы найдете простые примеры кода VBA для работы с Microsoft Word.

Выбрать / перейти к

ОписаниеКод VBABackspaceSelection.TypeBackspaceВыбрать весь документSelection.HomeKey Unit: = wdStory
Selection.ExtendКопироватьSelection.CopyУдалитьSelection.Delete Unit: = wdCharacter, Count: = 1Вставить послеSelection.InsertAfter «текст»Начало строкиSelection.HomeKey Unit: = wdLineКонец линииSelection.EndKey Unit: = wdLineВставитьSelection.PasteВыбрать всеSelection.WholeStoryВыбрать всю строкуSelection.EndKey Unit: = wdLine, Extend: = wdExtendВверх по абзацуSelection.MoveUp Unit: = wdParagraph, Count: = 1Переместить вправо на один символSelection.MoveRight Unit: = wdCharacter, Count: = 1Переместить вправо на одну ячейку в таблицеSelection.MoveRight Unit: = wdCellПерейти к началу документаSelection.HomeKey Unit: = wdStoryПерейти в конец документаSelection.EndKey Unit: = wdStoryПерейти на страницу 1Selection.GoTo What: = wdGoToPage, Which: = wdGoToNext, Name: = ”1 ″Перейти к началу страницыSelection.GoTo What: = wdGoToBookmark, Name: = ” Page”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1

Return to Top

Закладки

ОписаниеКод VBAДобавлятьС ActiveDocument.Bookmarks
.Add Range: = Selection.Range, Name: = «Name».
.DefaultSorting = wdSortByName
.ShowHidden = Ложь
Конец сСчитатьDim n as Integer
n = ActiveDocument.Bookmarks.CountУдалитьActiveDocument.Bookmarks («Имя закладки»). УдалитьСуществуют?Если ActiveDocument.Bookmarks.Exists («BookmarkName») = True, то
‘Сделай что-нибудь
Конец, еслиПерейти кSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”ВыбиратьActiveDocument.Bookmarks («Имя закладки»). ВыберитеЗаменить текстSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter «Новый текст»
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Name: = ”BookmarkName”

Return to Top

Документ

ОписаниеКод VBAАктивироватьДокументы («Example.doc»). АктивироватьДобавить в переменнуюDim doc As Document
Установить doc = Documents.AddДобавлятьDocuments.AddДобавить (из другого документа)Documents.Add Template: = ”C: Forms FormDoc.doc”, _
NewTemplate: = FalseЗакрыватьДокументы («Example.doc»). ЗакрытьЗакрыть — сохранить измененияДокументы («Example.doc»). Закройте SaveChanges: = wdSaveChangesЗакрыть — не сохранятьДокументы («Example.doc»). Закройте SaveChanges: = wdDoNotSaveChanges.Закрыть — запрос на сохранениеДокументы («Example.doc»). Закройте SaveChanges: = wdPromptToSaveChanges.

Return to Top

Столбцы

ОписаниеКод VBAСохранить какДокументы («Example.doc»). SaveAs («C: Example Example.doc»)СохранитьДокументы («Example.doc»). СохранитьЗащищатьДокументы («Example.doc»). Защитить пароль: = «пароль»Снять защитуДокументы («Example.doc»). Снять пароль: = «пароль»Число страницDim varNumberPages как вариант
varNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)РаспечататьДокументы («Example.doc»). Распечатать

Return to Top

Устали искать примеры кода VBA? Попробуйте AutoMacro!

Шрифт

ОписаниеКод VBAРазмерSelection.Font.Size = 12ЖирныйSelection.Font.Bold = TrueКурсивSelection.Font.Italic = TrueПодчеркиваниеSelection.Font.Underline = wdUnderlineSingleВсе заглавные буквыSelection.Font.AllCaps = TrueЦветSelection.Font.TextColor = vbRedИмяSelection.Font.Name = «Абади»Нижний индексSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueЦвет выделенияSelection.Range.HighlightColorIndex = wdYellowСтильSelection.Style = ActiveDocument.Styles («Нормальный»)

Return to Top

Вставлять

ОписаниеКод VBAВставить автотекстSelection.TypeText Текст: = ”a3 ″
Selection.Range.InsertAutoTextВставить код датыВставить файлSelection.InsertFile («C: Docs Something.doc»)Вставить разрыв страницыSelection.InsertBreak Тип: = wdPageBreakВставить символ абзацаSelection.TypeText Text: = Chr $ (182)Вставить вкладкуSelection.TypeText Текст: = vbTabВставить текстSelection.TypeText Text: = «Любой текст»Вставить абзац типаSelection.TypeParagraphВставить абзацSelection.InsertParagraph

Return to Top

Петли

ОписаниеКод VBAСделать до конца документаСделать до ActiveDocument.Bookmarks (« Sel») = ActiveDocument.Bookmarks (« EndOfDoc»)
‘Сделай что-нибудь
SubДля каждого документа в ДокументахDim doc As Document
Для каждого документа в документах
‘Сделай что-нибудь
Следующий документЦикл по абзацамПодпункты через абзацы
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 На iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далее я

Return to Top

Пункт

ОписаниеКод VBAKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = ИстинаПробел послеSelection.ParagraphFormat.SpaceAfter = 12Пространство доSelection.ParagraphFormat.SpaceBefore = 0Выровнять по центруSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterВыровнять по правому краюSelection.ParagraphFormat.Alignment = wdAlignParagraphRightВыровнять по левому краюSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftЛевый отступSelection.ParagraphFormat.LeftIndent = InchesToPoints (3,75)Правый отступSelection.ParagraphFormat.RightIndent = InchesToPoints (1)Межстрочный интервалС Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Конец сПеребрать все абзацыПодпункты через абзацы
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 На iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далее я

Return to Top

Учебное пособие по макросам Word VBA

Это руководство по использованию VBA с Microsoft Word. Это руководство научит вас писать простой макрос и взаимодействовать с документами, диапазонами, выделениями и абзацами.

Примечание. Если вы новичок в Macros / VBA, вам также может быть полезна эта статья: Как писать макросы VBA с нуля.

VBA — это язык программирования, используемый для автоматизации программ Microsoft Office, включая Word, Excel, Outlook, PowerPoint и Access.

Макросы представляют собой блоки кода VBA, которые выполняют определенные задачи.

Когда ты Записать макрос, Word запишет код VBA в макрос, что позволит вам повторять ваши действия. Вы можете увидеть список всех доступных макросов из Просмотр> Макросы.

После записи макроса вы сможете редактировать макрос из списка макросов:

Когда вы нажимаете Редактировать, вы открываете Редактор VBA. Используя редактор VBA, вы можете редактировать записанные макросы или писать макрос Word с нуля. Для доступа к редактору VBA используйте ярлык ALT + F11 или щелкните Visual Basic от Лента разработчика.

Пример простого макроса Word

Это простой пример макроса Word VBA. Он выполняет следующие задачи:

  • Открывает документ Word
  • Записывает в документ
  • Закрывает и сохраняет документ Word.
123456789101112131415 Sub WordMacroExample ()’Открыть документ и назначить переменнойDim oDoc как документУстановите oDoc = Documents.Open («c: Users something NewDocument.docx»).’Написать в документSelection.TypeText «www.automateexcel.com»Selection.TypeParagraph’Сохранить и закрыть документoDoc.SaveoDoc.CloseКонец подписки

Основы работы с макросами Word

Весь код VBA должен храниться в подобных процедурах. Чтобы создать процедуру в VBA, введите «Sub WordMacroExample» (где «WordMacroExample» — желаемое имя макроса) и нажмите ВХОДИТЬ. VBA автоматически добавит круглые скобки и End Sub.

Объект документа Word

При взаимодействии с Microsoft Word в VBA вы часто будете ссылаться на Word «Объекты». Наиболее распространенные объекты:

Объект приложения — сам Microsoft Word

Объект документа — документ Word

Объект диапазона — Часть документа Word

Объект выделения — Выбранный диапазон или положение курсора.

заявка

Приложение — это объект «верхнего уровня». Через него можно получить доступ ко всем остальным объектам Word.

Помимо доступа к другим объектам Word, можно применить настройки «уровня приложения»:

1 Application.Options.AllowDragAndDrop = True

Это пример доступа к «Выборке» в «Windows (1)» в Приложении:

1 Application.Windows (1) .Selection.Characters.Count

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

1 Selection.Characters.Count

Документы

ActiveDocument

Часто у вас есть два или более документов, открытых в Word, и вам нужно указать, с каким конкретным документом Word следует взаимодействовать. Один из способов указать, какой документ использовать ActiveDocument. Например:

1 ActiveDocument.PrintOut

… Напечатал бы ActiveDocument. ActiveDocument — это документ в Word, который «имеет фокус»

Чтобы переключить ActiveDocument, используйте команду Activate:

1 Документы («Example.docx»). Активировать

Этот документ

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

Переменные документа

Однако для более сложных макросов может быть сложно отслеживать активный документ. Также может быть неприятно переключаться между документами.

Вместо этого вы можете использовать переменные документа.

Этот макрос назначит ActiveDocument переменной, а затем распечатает документ, используя переменную:

12345 Sub VarExample ()Dim oDoc как документУстановите oDoc = ActiveDocumentoDoc.PrintOutКонец подписки

Документ Методы

Открыть документ

Чтобы открыть документ Word:

1 Documents.Open «c: Users SomeOne Desktop Test PM.docx»

Мы рекомендуем всегда назначать документ переменной при его открытии:

12 Dim oDoc как документУстановите oDoc = Documents.Open («c: Users SomeOne Desktop Test PM.docx»).

Создать новый документ

Чтобы создать новый документ Word:

Мы можем указать Word создать новый документ на основе некоторого шаблона:

1 Documents.Add Template: = «C: Program Files Microsoft Office Templates MyTemplate.dotx»

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

12 Dim oDoc как документУстановите oDoc = Documents.Add (Template: = «C: Program Files Microsoft Office Templates MyTemplate.dotx»)

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

Чтобы сохранить документ:

или Сохранить как:

1 ActiveDocument.SaveAs FileName: = c: Users SomeOne Desktop test2.docx «, FileFormat: = wdFormatDocument

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

Чтобы закрыть документ и сохранить изменения:

1 ActiveDocument.Close wdSaveChanges

или без сохранения изменений:

1 ActiveDocument.Close wdDoNotSaveChanges

Распечатать документ

Это напечатает активный документ:

1 ActiveDocument.PrintOut

Диапазон, выделение, абзацы

Диапазон а также Выбор являются, вероятно, наиболее важными объектами в Word VBA и, безусловно, наиболее часто используемыми.

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

Выбор относится к выделенному тексту (или другому объекту, например изображениям) или, если ничего не выделено, к точке вставки.

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

Диапазон

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

12 Dim oRange As RangeУстановите oRange = ActiveDocument.Content

или он может быть маленьким, как один символ.

Другой пример, этот диапазон будет относиться к первому слову в документе:

12 Dim oRange As RangeУстановите oRange = ActiveDocument.Range.Words (1)

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

В следующем примере мы выделим первое слово второго абзаца жирным шрифтом:

123 Dim oRange As RangeУстановите oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = True

Установить текст диапазона

Чтобы установить текстовое значение диапазона:

123 Dim oRange As RangeУстановите oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = «Привет»

(Совет: обратите внимание на пробел после «Hello». Поскольку слово «объект» включает пробел после слова, просто «hello» мы получим «Hellonext word»)

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

Изменить шрифт

1 oRange.Font.Name = «Arial»

Отображение в окне сообщения количества символов в определенном диапазоне

1 MsgBox oRange.Characters.Count

Вставьте текст перед ним

1 oRange.InsertBefore «это вставленный текст»

Добавить сноску к диапазону

12 ActiveDocument.Footnotes.Add Диапазон: = oRange, _Text: = «Подробнее читайте на easyexcel.net.»

Скопируйте в буфер обмена

1234 oRange.CopyЧасто вам нужно перейти к конкретному диапазону. Итак, вы можете начать, начать и закончитьoRange.Start = 5oRange.End = 50

После приведенного выше кода oRange будет относиться к тексту, начинающемуся с пятого и заканчивающемуся 50-м символом в документе.

Выбор

Выбор используется даже шире, чем Диапазон, потому что с ним легче работать Выборы чем Диапазоны, ЕСЛИ ваш макрос взаимодействует ТОЛЬКО с ActiveDocument.

Сначала выберите желаемую часть вашего документа. Например, выберите второй абзац в активном документе:

1 ActiveDocument.Paragraphs (2) .Range.Select

Затем вы можете использовать объект выбора для ввода текста:

1 Selection.TypeText «Какой-то текст»

Мы можем ввести несколько абзацев ниже «Некоторый текст»:

12 Selection.TypeText «Какой-то текст»Selection.TypeParagraph

Часто необходимо знать, выделен ли какой-то текст или у нас есть только точка вставки:

12345 Если Selection.Type wdSelectionIP ТогдаSelection.Font.Bold = TrueЕщеMsgBox «Вам нужно выделить текст».Конец, если

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

Начало документа:

1 Selection.HomeKey Unit: = wdStory, Extend: = wdMove

Начало текущей строки:

1 Selection.HomeKey Unit: = wdLine, Extend: = wdMove

Параметр Extend wdMove перемещает точку вставки. Вместо этого вы можете использовать wdExtend, который выделит весь текст между текущей точкой вставки.

1 Selection.HomeKey Unit: = wdLine, Extend: = wdExtend

Переместить выделение

Самый полезный метод изменения положения точки вставки — «Перемещение». Чтобы переместить выделение на два символа вперед:

1 Selection.Move Unit: = wdCharacter, Count: = 2

чтобы переместить его назад, используйте отрицательное число для параметра Count:

1 Selection.Move Unit: = wdCharacter, Count: = — 2

Параметр единицы измерения может быть wdCharacter, wdWord, wdLine или другим (используйте справку Word VBA, чтобы увидеть другие).

Чтобы вместо этого переместить слова:

1 Selection.Move unit: = wdWord, Count: = 2

С выделением легче работать (по сравнению с диапазонами), потому что он похож на робота, использующего Word, имитирующего человека. Где находится точка вставки — какое-то действие произойдет. Но это означает, что вы должны позаботиться о том, где находится точка вставки! Это непросто после многих шагов в коде. В противном случае Word изменит текст в нежелательном месте.

Если вам нужно какое-то свойство или метод, недоступный в объекте Selection, вы всегда можете легко получить диапазон, связанный с выбором:

1 Установите oRange = Selection.Range.

СОВЕТ: Использование Выбор часто проще, чем использование диапазонов, но также и медленнее (важно, когда вы имеете дело с большими документами)

Абзацы

Вы не можете напрямую использовать объект Paragraphs для изменения текста:

1 ActiveDocument.Paragraphs (1) .Text = «Нет, это не сработает»

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

1 ActiveDocument.Paragraphs (1) .Range.Text = «Теперь работает :)»

Но вы можете напрямую изменить его стиль:

1 ActiveDocument.Paragraphs (1) .Style = «Нормальный»

или измените форматирование на уровне абзаца:

1 ActiveDocument.Paragraphs (1) .LeftIndent = 10

или, может быть, вы хотите сохранить этот абзац на одной строке со следующим абзацем:

1 ActiveDocument.Paragraphs (1) .KeepWithNext = True

Сделайте абзац по центру:

1 ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter

ОЧЕНЬ полезно назначить конкретный абзац объектной переменной. Если мы присвоим переменной конкретный абзац, нам не нужно беспокоиться, станет ли первый абзац вторым, потому что мы вставили перед ним один абзац:

12 dim oPara как абзацУстановите oPara = Selection.Paragraphs (1) ‘здесь мы присваиваем первый абзац текущего выделения переменной

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

1234567 Sub ParagraphExample ()Dim oPara как абзацУстановить oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore ‘Вставить абзацMsgBox oPara.Range.TextКонец подписки

Объект абзаца очень часто используется в циклах:

123456789101112 Sub LoopThroughParagraphs ()Dim oPara как абзацДля каждого параметра в ActiveDocument.Paragraphs«Сделай что-нибудь с этим. Мы просто покажем’текст абзаца, если его стиль — «Заголовок 4″Если oPara.Style = «Заголовок 4», тоMsgBox oPara.Range.TextКонец, еслиДалее oParaКонец подписки

Word VBA Tutorial Заключение

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

Примеры макросов Word

Примеры макросов Word
Шаблоны
Добавить новые документы
Подсчет слов в выделенном фрагменте
Текстовые поля
Сохранить как PDF
Закладки
Таблицы
Найти, найти и заменить
Открытые документы

Word VBA: часто задаваемые вопросы

Что такое макрос Word?

Макрос — это общий термин, обозначающий набор инструкций по программированию, которые автоматизируют задачи. Макросы Word автоматизируют задачи в Word с помощью языка программирования VBA.

Есть ли в слове VBA?

Да, в Microsoft Word есть редактор VBA. Доступ к нему можно получить, нажав клавиши ALT + F11 или перейдя в раздел «Разработчик»> «Visual Basic».

Как использовать VBA в Word?

1. Откройте редактор VBA (ALT + F11 или Разработчик> Visual Basic).
2. Выберите «Вставить»> «Модуль», чтобы создать модуль кода.
3. Введите «Sub HelloWorld» и нажмите Enter.
4. Между строками «Sub HelloWorld» и «End Sub» введите «MsgBox« Hello World! »
5. Вы создали макрос!
6. Теперь нажмите «F5», чтобы запустить макрос.

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Выделение всего содержимого страницы с указанным номером

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 7 ]

1 28.04.2010 17:10:45

  • andrkar
  • Модератор
  • Неактивен
  • Откуда: Томск
  • Зарегистрирован: 10.03.2010
  • Сообщений: 431
  • Поблагодарили: 26

Тема: Выделение всего содержимого страницы с указанным номером

Нужна помощь!
Необходимо выделить (а затем вырезать в буфер обмена, а лучше в какую-то переменную) содержимое страницы с указанным номером.
Я пока реализовал следующий механизм.
1) если страница в документе одна, то просто выделить от начала документа до конца документа
2) если страниц больше на одну, чем номер требуемой страницы, то переход к началу страницы, следующей за требуемой, вставка там какого-нибудь символа, например знака бесконечности, потом переход к началу требуемой страницы и расширение выделения до символа бесконечности.
3) вырезание в буфер выделенного
4) переход к месту вставки
5) вставка содержимого буфера
6) очистка буфера
7) удаление знака бесконечности

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

можно ли те же самые действия провести без использования Selection, или хотя бы — как провести проверку выделенной страницы, и если там есть разрыв страницы или раздела, убрать его из выделения (как я понимаю, разрыв в любом случае будет последним элементом выделения)?

2 Ответ от viter.alex 28.04.2010 18:19:26

  • Выделение всего содержимого страницы с указанным номером
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выделение всего содержимого страницы с указанным номером

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

Sub SelectPage()
  Dim PageNum As Long
  PageNum = InputBox("Введите номер страницы")
  With Selection
    'Переход к указанной таблице
    .GoTo wdGoToPage, wdGoToAbsolute, PageNum
    'Выбор страницы, на которой выделение
    .Bookmarks("page").Select
    'Сжимаем выделение, если последний _
    или предпоследний символ это разрыв
    If Asc(.Characters.Last) = 12 Then
      .MoveLeft wdCharacter, 1, wdExtend
    End If
    If Asc(.Characters.Last.Previous.Text) = 12 Then
      .MoveLeft wdCharacter, 2, wdExtend
    End If
    '####################################
    'Берём выделение в закладку
    .Bookmarks.Add "TempBm", .Range
    'Переход в конец документа
    .EndKey wdStory
    'Добавляем поле, ссылающееся на эту закладку
    With .Fields.Add(.Range, wdFieldRef, "TempBm", False)
      .Update 'Обновляем
      .Unlink 'Разрываем связь поля
    End With
    ActiveDocument.Bookmarks("TempBm").Delete 'Удаляем закладку
  End With
End Sub

Лучше день потерять — потом за пять минут долететь!

3 Ответ от andrkar 28.04.2010 19:10:17

  • andrkar
  • Модератор
  • Неактивен
  • Откуда: Томск
  • Зарегистрирован: 10.03.2010
  • Сообщений: 431
  • Поблагодарили: 26

Re: Выделение всего содержимого страницы с указанным номером

Именно то, что нужно!!! Ни в жизни бы сам не догадался бы, пока не начал плотно изучать закладки, что можно нужную страницу можно выделить именно вот так:

.Bookmarks("page").Select

Спасибо огромное! Осталось только адаптировать код под задачу, все необходимое для этого в приведенном вами примере есть! Так как мне необходимо перемещаться содержимое как миним трех страниц, то сделаю эту процедуру с праметрами — номер страницы, содержимое которой нужно «вырезать», и номер страницы, в начало которой нужно вставить «вырезанное»…
Протестировал.. Выделенный фрагмент не удаляется со своего места, а создается его клон. А нужно, чтобы удалялось sad Использую первую часть, а дальше с буфером обмена. Благо процедуры его очистки уже готовы:)

Отредактировано andrkar (28.04.2010 19:32:47)

4 Ответ от viter.alex 28.04.2010 21:10:14

  • Выделение всего содержимого страницы с указанным номером
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выделение всего содержимого страницы с указанным номером

andrkar пишет:

Выделенный фрагмент не удаляется со своего места, а создается его клон

Изменить нужно всего лишь одну строчку:

ActiveDocument.Bookmarks("TempBm").Range.Delete

Лучше день потерять — потом за пять минут долететь!

5 Ответ от andrkar 28.04.2010 23:37:09

  • andrkar
  • Модератор
  • Неактивен
  • Откуда: Томск
  • Зарегистрирован: 10.03.2010
  • Сообщений: 431
  • Поблагодарили: 26

Re: Выделение всего содержимого страницы с указанным номером

Вот так реализовал для своих целей:

Sub SelectAndCutPage(PageForCut, PageForPaste As Long)
  'Выделение и вырезание содержимого необходимой страницы и вставка его на указанную
  'идея viter.alex
  With Selection
    'Переход к указанной странице
    .GoTo wdGoToPage, wdGoToAbsolute, PageForCut
    'Выбор страницы, на которой выделение
    .Bookmarks("page").Select
    'Сжимаем выделение, если последний _
    или предпоследний символ это разрыв
    If Asc(.Characters.Last) = 12 Then
        .MoveLeft wdCharacter, 1, wdExtend
    End If
    If Asc(.Characters.Last.Previous.Text) = 12 Then
        .MoveLeft wdCharacter, 2, wdExtend
    End If
    .Cut
    .MoveRight wdCharacter, 1, wdExtend
        If Asc(.Characters.Last) = 12 Then
            .Delete unit:=wdCharacter, Count:=1
        End If
    .GoTo wdGoToPage, wdGoToAbsolute, PageForPaste
    End With
End Sub

После применения данной процедуры и отладки удалил строк 50 лишнего кода! Еще раз спасибо. Можно тему считать закрытой

6 Ответ от viter.alex 29.04.2010 06:50:54

  • Выделение всего содержимого страницы с указанным номером
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выделение всего содержимого страницы с указанным номером

А ты уверен, что после вырезания, да ещё и удаления разрыва, номера страниц не сместятся?

Лучше день потерять — потом за пять минут долететь!

7 Ответ от andrkar 29.04.2010 15:43:14

  • andrkar
  • Модератор
  • Неактивен
  • Откуда: Томск
  • Зарегистрирован: 10.03.2010
  • Сообщений: 431
  • Поблагодарили: 26

Re: Выделение всего содержимого страницы с указанным номером

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

Сообщений [ 7 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Похожие темы

  • Количество страниц и выделение текста страницы в активном документе
  • проблема с колонтитулами и номером страниц
  • Макрос для замены содержимого ссылок
  • Как убрать прозрачность содержимого колонтитулов в Word?
  • Перенос содержимого структуры на другой лист
  • Можно ли вычислить ячейку по Range части ее содержимого?
  • «Импорт» содержимого в ЭУС [раскрывающийся список]/[поле со списком]
  • Вставка содержимого файла или таблицы в определенное место документа

Выделение всего содержимого страницы с указанным номером

Если вы ищите информацию по самому мощному редактору в мире Microsoft Word в сети, жаловаться на недостаток документов, литературы, различных ссылок и советов придется вряд ли. На портале о Microsoft Office Word вы узнаете про: как открыть документ сохраненный с макромами.
Только в разбросанном виде все это жутко неудобно. Гораздо результативнее общаться на специальных форумах. Наш сайт о Microsoft Office Word даст ответ про: тест word 2007.
Это удобнее еще и тем, что на свою проблему вы получите отклики так сказать в развитии, можно будет обсудить, что не получается, что именно не устраивает. Наш сайт о Microsoft Office Word даст ответ про: как нарисовать рамку в ворде lkz rehcjdjq.
Для русскоязычных пользователей Microsoft Word можно посоветовать форум Ворд Эксперт.

На нем представлены как готовые ответы на вопросы и наработки опытных пользователей в разделах «часто задаваемые вопросы» и «готовые решения», так и обсуждения работы с документами и настройками программы в разных версиях  нашего любимого Microsoft Word. На портале о Microsoft Office Word вы узнаете про: как выставить сноску в ворде.
Это разделы «Настройка и Форматирование», а также «Автоматизация», где вас научат, как сделать работу с программой максимально оптимальной и быстрой, написав соответствующие макросы. Наш сайт о Microsoft Office Word даст ответ про: открыть ворд 2007 в 2003.

Если вы не хотите сами разбираться с макросами или ломать голову над той, либо иной, возникшей в работе проблемой, то в «Заявках на разработку» можете оставить заказ, форумчане вам помогут. На портале о Microsoft Office Word вы узнаете про: не могу поставить обтекание картинки текстом в ворде ошибка.

Форум Ворд Эксперт — это страничка, которую стоит запомнить, потому что она может пригодиться в любой момент. Наш сайт о Microsoft Office Word даст ответ про: стандарты оформления документов список.
Форум и сайт очень разумно устроены, а все пожелания вы можете высказать в соответствующем разделе.

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

Как выделить символ?

1. Подвести указатель мыши к нужному символу и, удерживая левую кнопку мыши, выделить нужный символ;

2. Чтобы выделить один символ справа от курсора, необходимо нажать сочетание клавиш Shift+стрелка вправо;

3. Чтобы выделить один символ слева от курсора, необходимо нажать сочетание клавиш Shift+стрелка влево;

4. Чтобы выделить ближайший символ (знак), необходимо нажать клавишу F8 для входа в режим выделения, а затем нажать клавишу Стрелка влево или Стрелка вправо, для выхода из режима выделения нажать клавишу Esc (отмена).

Как выделить слово?

1. Подвести указатель мыши к нужному слову и кликнуть по нему два раза;

2. Чтобы выделить слово от начала к концу, необходимо установить курсор в начало слова и нажать сочетание клавиш Ctrl+Shift+стрелка вправо;

3. Чтобы выделить слово от конца к началу, необходимо установить курсор в конец слова и нажать сочетание клавиш Ctrl+Shift+стрелка влево;

4. Чтобы выделить слово, необходимо нажать клавишу F8 для входа в режим выделения, а затем нажать F8 еще один раз для выделения слова, следующего за курсором. Для выхода из режима выделения нажать клавишу Esc (отмена).

Как выделить строку?

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

2. Чтобы выделить строку от начала к концу, необходимо нажать клавишу Home, а затем нажать сочетание клавиш Shift+End;

3. Чтобы выделить строку от конца к началу, необходимо нажать клавишу End, а затем нажать сочетание клавиш Shift+Home;

4. Чтобы выделить одну строку вниз, необходимо нажать клавишу End, а затем нажать сочетание клавиш Shift+стрелка вниз;

5. Чтобы выделить одну строку вверх, необходимо нажать клавишу Home, а затем нажать сочетание клавиш Shift+стрелка вверх.

Как выделить предложение?

1. Навести указатель на любое слово нужного предложения и, удерживая нажатой клавишу Ctrl, кликнуть по нему один раз;

2. Чтобы выделить предложение, необходимо нажать клавишу F8 для входа в режим выделения, а затем дважды нажать F8 для выделения предложения, в котором находится курсор. Для выхода из режима выделения нажать клавишу Esc (отмена).

Как выделить абзац?

1. Необходимо трижды кликнуть по абзацу;

2. Чтобы выделить абзац от начала к концу, необходимо установить курсор в начало абзаца, а затем нажать сочетание клавиш Ctrl+Shift+стрелка вниз;

3. Чтобы выделить абзац от конца к началу, необходимо установить курсор в конец абзаца, а затем нажать сочетание клавиш Ctrl+Shift+стрелка вверх;

4. Чтобы выделить абзац, необходимо нажать клавишу F8 для входа в режим выделения, а затем трижды нажать F8 для выделения абзаца, в котором находится курсор. Для выхода из режима выделения нажать клавишу Esc (отмена).

Как выделить несколько абзацев?

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

Как выделить большой фрагмент текста?

1. Для выделения большого фрагмента текста надо щелкнуть в начале выделяемого фрагмента, прокрутить документ до конца фрагмента, а затем, удерживая нажатой клавишу Shift, щелкнуть в конце фрагмента.

Как выделить несколько фрагментов текста, расположенных в разных местах?

1. Выделить фрагмент текста или элемент таблицы, затем, удерживая нажатой клавишу CTRL, выделить другой фрагмент текста или элемент таблицы.

Как выделить вертикальный блок текста?

1. Чтобы выделить произвольный, вертикальный блок текста, необходимо удерживая нажатой клавишу Alt, провести указателем по тексту;

2. Чтобы выделить вертикальный блок текста, надо нажать клавиши Ctrl+Shift+F8, а затем, используя клавиши со стрелками выделить нужный блок. Для выхода из режима выделения нужно нажать клавишу Esc (отмена).

Как выделить текст, видимый на экране?

1. Чтобы выделить экран от начала к концу, необходимо установить курсор в начало окна и нажать клавиши Alt+Ctrl+Shift+PageDown;

2. Чтобы выделить экран от конца к началу, необходимо установить курсор в конец окна и нажать клавиши Alt+Ctrl+Shift+PageUp.

Как выделить страницу?

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

2. Воспользоваться макросом VBA для выделения страницы по заданному номеру.

Как выделить несколько страниц?

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

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

Kak vydelit tekst v word

CompleteSolutionскачать надстройку для выделения текста с выбранных страниц

Как выделить весь документ?

1. На вкладке «Главная» в группе кнопок «Редактирование» раскрыть меню кнопки «Выделить» и выбрать пункт «Выделить все»;

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

3. Нажать на клавиатуре сочетание клавиш Ctrl+A;

4. Чтобы выделить весь документ, необходимо нажать клавишу F8 для входа в режим выделения, а затем четырежды нажать F8. Для выхода из режима выделения нажать клавишу ESC (отмена);

5. Чтобы выделить весь документ от начала к концу, необходимо установить курсор в начало документа и нажать клавиши Ctrl+Shift+End;

6. Чтобы выделить весь документ от конца к началу, необходимо установить курсор в конец документа и нажать клавиши Ctrl+Shift+Home.

Как выделить колонтитулы?

1. Для выделения колонтитулов необходимо в режиме разметки дважды щелкнуть по затененному тексту колонтитула, переместить указатель к левому краю колонтитула так, чтобы он принял вид стрелки, направленной вправо, и щелкнуть один раз левой кнопкой мыши.

Как выделить сноски?

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

Как выделить надписи и рамки?

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

Другие материалы по теме:

Аннотация: Лекция посвящена описанию объектов Selection и Range, описанию особенностей работы с автоматически выполняемыми макросами и шаблонами.

11.1. Объект Selection

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

Напомню, что объект Application.Selection представляет собой выделенный участок документа или, если ничего не выделено, позицию курсора. Именно этим объектом пользуется макрорекордер при записи макроса, выполняющего какие-либо операции с текстом.

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

Выделения можно создавать и программно, но эту методику практически никогда не используют на практике. Например, код листинга 11.1 выделяет седьмое слово в документе и форматирует его курсивом:

ActiveDocument.Words.Item(7).Select
Selection.Font.Italic = True


Листинг
11.1.
Выделяем седьмое слово и форматируем его

Предположим, мы используем такую конструкцию в шаблоне для автоматического форматирования текста. Если мы правильно рассчитаем номер слова, которое нужно отформатировать (или отредактировать, вставить в документ и т.д.) — то все будет работать правильно. Но стоит нам отредактировать шаблон — даже совсем немного, но так, что количество слов в нем изменится, наш макрос будет работать неправильно.

Объект Selection обычно используют без объявления объектной переменной. Например, для вставки в выделенную позицию документа текста «Привет» достаточно конструкции листинга 11.2.

Selection.Text = "Привет"


Листинг
11.2.
Добавляем текст в выделенную позицию документа

Минус использования Selection при автоматической обработке текста зависит от того, что он слишком чувствителен к действиям пользователя. Например, мы напишем программу, которая, имитируя выделение фрагментов текста с клавиатуры, обрабатывает текст. Если во время обработки текста пользователь вмешается, случайно кликнув мышью в документе, работа такой программы будет нарушена.

Рассмотрим основные свойства и методы объекта Selection.

11.2. Методы объекта Selection

11.2.1. ClearFormatting — очистить форматирование

Этот метод очищает форматирование выделенного участка документа.

11.2.2. Copy, Cut, Paste, Delete

Методы Copy и Cut, соответственно, копируют и вырезают выделенный фрагмент в буфер обмена, а метод Paste — вставляет материалы из буфера в область выделения.

Метод Delete удаляет выделенный фрагмент

11.2.3. InsertAfter, InsertBefore — добавление текста

Как следует из их названий, методы InsertAfter и InsertBefore позволяют вставить текст после или до выделения. Существуют и другие методы, название которых начинается с Insert. Они позволяют вставлять множество других объектов в выделенную область. Например, InsertBreak вставляет разрыв страницы, колонки или раздела, InsertCells вставляет в выделенную таблицу ячейки и т.д.

11.2.4. TypeBackspace — удалить символ

Удаляет один символ, предшествующий позиции курсора, имитируя нажатие клавиши Backspace на клавиатуре.

11.2.5. TypeParagraph — перевод строки

Имитирует нажатие клавиши Enter на клавиатуре — вставляет в текст знак перевода строки.

11.2.6. TypeText — вывести текст в документ

Вводит в документ текст. У метода есть лишь один параметр — Text. Он должен содержать тот текст, который должен быть выведен в документ. Ниже мы рассмотрим примеры, где используется этот метод.

11.2.7. WholeStory — выделить весь документ

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

11.3. Свойства объекта Selection

11.3.1. Bookmarks и другие

Это свойство возвращает коллекцию Bookmarks, которая содержит все закладки, имеющиеся в выделении. Существуют подобные свойства для символов ( Characters ), таблиц ( Tables ) и многих других коллекций объектов. Работа с ними ни чем не отличается от работы с аналогичными коллекциями, входящими в Document.

11.3.2. End и Start

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

11.3.3. Font — шрифт

Это свойство позволяет узнавать и настраивать параметры шрифта выделенного фрагмента. Например, код, приведенный в листинге 11.3 форматирует текст. Пояснения к примеру приведены в комментариях.

'Полужирный
    Selection.Font.Bold = wdToggle
    'Курсивный
    Selection.Font.Italic = wdToggle
    'Подчеркнутый
    Selection.Font.Underline = wdUnderlineSingle
    'Гарнитура Arial Narrow
    Selection.Font.Name = "Arial Narrow"
    'Размер шрифта - 14
    Selection.Font.Size = 14
    'Цвет шрифта - красный - из
    'перечисления wdColorR
    Selection.Font.Color = wdColorRed


Листинг
11.3.
Форматируем текст

11.3.4. Information — подробности о выделении

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

11.3.5. Range — переход от Selection к Range

Это свойство позволяет получить объект Range, соответствующий выделению.

Например, этим свойством можно воспользоваться так, как показано в листинге 11.4.

Dim obj_Range As Range
Set obj_Range = Selection.Range


Листинг
11.4.
Получаем объект Range из Selection

11.3.5. Text — текст выделения

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

11.4. Пример работы с Selection

11-01-Selection.docm— пример к п. 11.4.

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

11.4.1. Задание

Создать новый документ, и добавить в него текст, который был выделен в текущем документе. Каждое слово этого текста надо напечатать отдельно, с новой строки. Каждое слово должно предваряться таким текстом: «Слово №x:», где x — номер слова в выделенном тексте. После вывода слов нужно подсчитать количество слов и количество букв в этих словах и вывести строку «Всего обработано «x» слов, состоящих из «xx» букв». Готовый документ сохранить на диске C:, задав в качестве его имени такую структуру:

"Имя_исходного_документа"+ "текущая дата"+ "обработано".docm

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

11.4.2. Решение

Создадим новый макрос ( Copy_To_File ), воспользовавшись окном Макросы, которое можно открыть с вкладки Вид.

Добавим в макрос код из листинга 11.5.

'Переменая для хранения ссылки на новый документ
    Dim obj_NewDoc As Document
    'Для ссылки на исходный документ
    Dim obj_OurDoc As Document
    'Динамический массив для хранения слов
    Dim WordsArray() As String
    'Переменная для хранения количества слов
    Dim WordsCount
    'Переменная для формирования строк,
    'которые выводятся в новый документ
    Dim OutString
    'Переменная для хранения количества
    'символов в обработанных словах
    Dim LettersCount
    'В этой переменной будем создавать
    'имя файла
    Dim NewDocName
    'Запишем ссылку на активный документ
    'Для того, чтобы вернуться в него
    'после работы с новым документом
    Set obj_OurDoc = ActiveDocument
    WordsCount = Selection.Words.Count
    LettersCount = Selection.Characters.Count
    ReDim WordsArray(WordsCount)
    'Переносим слова из выделения
    'в массив для удобства работы с ними
    For i = 1 To WordsCount
        WordsArray(i) = Selection.Words.Item(i)
    Next i
    'Создадим новый документ
    Set obj_NewDoc = Documents.Add
    'И сделаем его активным
    obj_NewDoc.Activate
    'Теперь объект Selection относится к активному
    'документу и мы начинаем вводить в него данные
    Selection.TypeText ("Список выделенных слов")
    Selection.TypeParagraph
    For i = 1 To WordsCount
        OutString = "Слово №" + Str(i) + ": " + _
        WordsArray(i)
        Selection.TypeText (OutString)
        Selection.TypeParagraph
    Next i
    Selection.TypeText ("Всего обработано " + _
    Str(WordsCount) + _
    " слов(а), в которых содержится " + _
    Str(LettersCount) + " символа(ов)")
    'Создаем имя нового документа
    NewDocName = obj_OurDoc.Name + " " + _
    Str(Date) + " Обработано.docx"
    'Установим корневой каталог диска C:
    'для сохранения нового файла по умолчанию
    ChangeFileOpenDirectory "C:"
    'Используем метод SaveAs для
    'автоматического сохранения
    'документа
    ActiveDocument.SaveAs _
    FileName:=NewDocName, _
    FileFormat:=wdFormatDocumentDefault
    'Закрываем активный документ
    ActiveDocument.Close
    'Активируем документ, в котором мы выделяли
    'слова
    obj_OurDoc.Activate
    'Отмечаем обработанный участок
    'скобками и выделением синим цветом
    Selection.InsertAfter (") ")
    Selection.InsertBefore (" (")
    Selection.Font.Color = wdColorBlue
    'Выделяем первый символ текущего выделения и
    'выводим сообщение о том, что операция
    'выполнена
    Selection.Characters(1).Select
    MsgBox ("Выполнено!")


Листинг
11.5.
Решение задачи

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

Понравилась статья? Поделить с друзьями:
  • Макрос word выделенный текст
  • Макрос в excel выделить текущую строку
  • Макрос word вставка таблицы
  • Макрос в excel вставка значений если
  • Макрос vba excel что это