4 / 4 / 2 Регистрация: 07.05.2014 Сообщений: 489 |
|
04.11.2017, 10:52 [ТС] |
3 |
Привет, я нашел этот текст, он записал в текстовый файл, но сейчас надо сделать чтобы был параграф, и перед этим параграфом точка тоже была убрана.
0 |
������ � ������� � Word VBA
������ � ������� � Word VBA
������� Range � Selection �������� ���������� ������� ��� ����������� ����� ��������, ������� �� ������� ��������� � ������� � ������� Word VBA. ��������� �� ���� �������� ����� ��������� � ���������� � �����, �� � ����� ������ ��� ��������� �������� ��� ���������� �������, ������ ��� ������� ���������.
� �������� Range � Selection ���������� ����� ������, �� ���� � ��������� �������� �������. ��� ������� ������������ ����������� ������������������ ��������, ��� �������� �� ������� ��������� ��������� ��������. ��� ������� ����� ����� ����� ������� � �������. ������ ��������� �������� � ������ ��������� ��� ���������� ��������, � ������ — ��� ����������. ������������ �������� ������� � � ���, ��� ������ Selection ������������� ��������� � ������� ����: ������, ������������ ����������� ��� ������ ������� �������, � �� ����� ��� ������� Range ���������� ���������� �� ���������� ������� � ������ �������� �����.
����������� ������ Selection � ��� ������, ���� ���� ��������� ������� �� ������������, ��������, �� ������ ������� �����, � ������� ����� ��������� ������������ ��������, ��� � ��� ������, ���� ��� ���������� �������� ������������, ����� ������ ����� ����� �������. � ������ ��������� ������� ����� �������� ������� Range. ��� ������������ ������� �������� ���������� �������� � ������ ���������� ������������: Word ��������� ���������� ������ ��� ������ ��������� ����������� ���������� �������, � ��� ��������� ��������� ���������� ������ �� �����������. ����� ����, ��������� ���������� �� ���������� �� ���������� ��������, ��������� �������������.
�������� �� �� ��������, ������� Selection � Range ����� ��������� ���� �� �������. ��� ����������� ����������� ����������� ������, ��� ��� ������ ������� �������������� �������� ������ � �����������. � ����������������� �����, ������������ ������ ���������� ���������� ��������� ������������- �������� ���. ����������� ��������� ������� ������.
* ��� ��������� ��������� ������������ ��� ����� Select. ��������, ��� ������� RangeR ������� ����� ��� RangeR. Select.
* ��� ��������� ������� � ���������, ��������������� �� �� ����������, ��� � ���������� �������, ������������ �������� Range.
�������: ���� �����, ����������� � ��������� ������, ���������� ��� ���������, � �� ������ ��������� ��� � ���������� �������, ������ �������� � ���� ��� ���������� Selection . Range . ���������.
Word VBA ���������� ����� ��� ������� ��� ����������� � ��������� �������� ���������� � ���������� ��������. � ��������� ������� � ������������ ������ ����� ������ �� ���; ��� ���������� � ������� �������� ��� �������� ���������� � ���������� �������.
����� Expand ����������� ������������ �������� ��� ���������� �������, �������� ���� ������ � �� �����. ���� ����� ������������ ����� ������, �����, ����� ��� ���-������ ������. �� ������ �������� ������ ���� ������� ������������ ����; ����� ����, ���������� �������� ������ � ������ ��������� ��� ���������� ������� �� �����������.
��� ���������� � ���������� ������� �����, ������� ����� ��������� ����� �� ���, ����������� ����� ����������:
Selection.Expand(wdWord)
�� ������ ������������ ����� �� ��������� �������� ��� ���������� �������; wdCharct er, wdWord, wdSent ence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, wdTable � (������ ��� �������� Selection) wdLine. �� ��������� ������������ ��������� wdWord.
������ ��� ������� ������������ �� ����� ���������� �������: ������� Selection (�� �� ���������) ����� �������� ����� Expand. ���� ����� �������� ��������������� �������� Word, ������� ��������� ��������� ���������� ������� ��� ����������� ��������� ����. ������ ���, ����� ��������� �������� ����� Extend, ���������� ������� ������������� �� ���� ������, ������� ������� ����� �� ������ �������: ������� �����, �����������, �����, ���������� �������� ��� ����� ��������. ���� �� ������� �������� � ���� ������ �������, ��������, Selection.Expand ( «�» ). ���������� ������� ����� ��������� ������ �� ������� �������������� ���������� �������.
Word VBA ��������� ��� �������� ���������� ������ � ����� ��������� ��� ���������� �������. ������ ������ � ����, ��� ������, � ����� ������� ������������ ����� Move, �������� ������������ ��������� ��� ���������� �������: ��� �� ���������� �����, ������� ���������� � ��������� �������.
����� Move �������� �������� ��� ���������� �������, ������� � �� ������, ������� �� ������������, � � ��� ��� ��� �������� ������. ������������ ��������� � ������� ��������� �������. ����� ����� ����� Move ���������� «������» ������ � ������������ � ������ ������������. �� ��������� ����������� �� ������ ������������ ������ Expand � Mover,nd ��� ���������� ������� �������.
����������� ���� ������ ���������� ����������� �������� � ��������� �� ��� ������ �����. �������� �������� �� ��, ��� �� ����������� ����������� ��������� � �������� �������� ��������� Uni t (������ ���� ���������� ����������� �������� �������� � �������
«���������� ���������� � ���������� ��������» ������ � ���� �����). �������� Count ������������ ����� ����� ������������� �����, ���� �� ������ ���������� ������ ������ �� ��������� (�.�. � ��� �����), ��� �������������, ���� �� ������ ���������� ������ ����� �� ���������. � ����������� ���� ������� ��������� �� ��������� � ������, ��������� ������������ ������� �������� (���������� ������������ ���������) ����� �� ������������:
oTheRange .Move Unit : = waParagraph, Count, : = -2
������ MoveStart. � MoveEnd �������� ����������� ��� ��, ��� � ����� Move, ������ ��� �������� ��������� ��� �������� ����� ��������� ��� ���������� ������� ��������������. ����������� ���� ���������� ���������� ������ ���������� ������� �� ��� ����� ����� � ����� ���������:
Select-on.KoveStart Unit : = wdWord, Count := 3
�������� �������� �� ��, ��� ���� �� ����������� ��������� ����� ������� � �����, Word ������ �������� ��� ���������� ������� � ���������� �� � ������������ � ���������� ������������.
��� ���� ���� �������, Start Of ��� EndOf, ���������� ��� ��������� ������ ��� ����� ��������� ��� ���������� �������. ����� Start Of ���������� ������ ������� ������� � ������ �������� �����, � �� ����� ��� ����� EndOt ���������� ����� ������� ������ � ����� �������� �����.
�� ������ ������������ �������� Extend � ����� ������� ��� �������� ��� ���������� Word. ���� ������������ ������� ������� ��� ��������� � ���� ����, � �������� �� ��������� �� �����������, ����� �� ����������. ����������� ��������� wdMove ��� �������� ������� ��� ��������� wdExtend ��� ����������� ������ ��������� �������. ���� �������� ��������������� ������:
Selection. Start Of Unit := wdSentence, Extend := wdMove
����� ����� ��� ���������� ����� �������� ��� ���������� ������� � �����, ������� �� �������� �������� ������. � ����������� ����� ������ ��������� �������� ��� ���������� ������� — ��� ����� �������� ��� ���������� �������, ��������� � �������� ����� ������� ���������. ������ �������� �������� ����������� ������ � ��� ���������, ����� ��� ���������� �������� ����, ������� ��� ������ ������� �� ��� ����� ���������� ������� ��� ���������, �������� ��� ������ ������. (�� ������ �������� ������� �����, ����� ������, � ����� ��������� ������ �������� � «��������» �������� ��� ���������� �������).
����������� ����� Collapse ��� ������ ��������� ��� ���������� �������. �� ������ ����� ������ � ��� ��������� ��� �������� �����, ��������� �������������� �������� Direction. ����������� ���� ���������� ������� ���������� ������� � �� ��������� �����:
Selection.Collapse
� ���� ������ ������� ���������� ������� � �� �������� �����:
Selection.Collapse( Direction:=wdCollapseEnd)
���� �� ������� ��������, ������� ������������� ������ ������, � ��� �������� ����� (��������� ��������� wdCollapseEnd), Word ��������� ������ �������� ����� ����� ������ (��� ��������, ��� ������ �������� ����� ���������� � ��������� ������). ���� �� �� ������ ���������� ���-�� ����� ������ ������ ��������� ���������, �� ������ ������� ����������� �������� ������� � ������� ������ MoveEnd, ��������� ����������, �������� ����:
��������.MoveEnd Unit := wdCharacter, Count := -1
������� ���� ����� � ��������� ��� ���������� ������� ������ ��������: ������ ����������� ����� Delete ���������������� �������. �� ������ ������������ � ����� Cut, ���� ������ ������� ����� � ��������� ��� � ����� ������. ������� ��, ����� ���� �������� ����� � ����� ������, �� ������ ������� �� ����� � ��������� ��� ���������� �������.
�� ������ �������� �����, ������ ���������� � ����� ������, � ����� �������� ��� ���������� �������, ���������������� ������� Paste ����� �������. ���� ������ ���������� ��� �� ����, ����������� ����� ������ ������� �������� ����� � �������, ����� ��� �� ��� ��� ���������� ����� ���������� ������� �������� � Word.
���� ������������� ������ ������ ��� �������� ������ �� ������ ����� � ������ ������� ������ ���������, ���� ����� �� ������ ����������� ����� �����������. ������� ������� ������������ �������� Text ��� FormattedText ��������� ��� ���������� �������. ������� ��� �������� ������� ��������� ��� ���������� �������, ���������� �����, ������� �� ������ ��������, � ���. ������ ���������� ������ ���� ���� �� ��� ���, ���� ������������ ����� �� ������ ����� �������� ������������ ����� � �������.
����������� ���� �������� ���� �������� ����� �� ���������� ������� � ������ ��������, ����������� � �������� (�������� �������� ����������� ��������� ������ ����). � ����� ����� ������������ �������� ������ ��� �����; ����� �������������� ��� ���� ��������:
With ActiveDocument.Bookmarks("TheBookmark")
Set RangeY = _
ActiveDocument.Range(Start:=.Start, End=.Start)
End With
RangeY.Text = Selection.Text
��� �������� ������ � ������� � ��� �������������� ������ �������� �������� Text ��������� FormattedText.
���������� ��� ����������� ������� ���������� ������ �������� ������� �������� Text ��������� ��� ���������� ������� ������ ������, ������� �� ������ ��������. ��� ����������������� �� �������, ���������� ����:
Range2.Text = «��, ��! � ���� ����-�� ������ ���!»
������ ���������, ��� ������������� �������� Text �������� � ������ ������ ������������� � �������. �� ��������� ����� (���� ������ �� ������������� �� ������ �������� ������������ �����), ������� ������� ������.
����������� ������ Insert Before ��� Insert After �������� Range ��� Selection ��� ������� ������ � ������������ ����� ���������, �� ���������� ��� ���� ������������ �����. ��� ������ ��������� �������� ����� ����� ��������������� ����� ��� ����� ���������� ������� ��������������. Word �������� ����������� ����� � ���������� ������� ��� ��������.
��� ������������� ������ �� ������� ������������ ���������� �������� �����, ������� �� ������ ��������. ����������� ���� �������� ���� ��������� ����� �����, ���������� ����� Dairy Entry � ������ ���������� ������� (�������� �������� �� ������������� ����� ��������� VBA, ��� vbCr, ��� ���������� ����� ������). ����� ����� � ����� ����������� ����� �����, ������� ���������� � ������� ����. ���� �� �������� ����� ����� �� ���������� ����� ����, �����, ���������� ������� ����, �������� ����� ����� ������ � ���������� �������.
Dim strInsert Text As String
Selection.Insert Before "Dairy Entry" & vbCr
strInsert Text = "Today" & Chr(146) & "s date is"
strInsertText = _
strInsertTex't & Format (Now, "Long date") & ". "
Selection.InsertAfter strInsertText & vbCr
���� ������ ����������, ����� ������� ����������� ����� ����� ��������� ��������� ���������� ������� VBA, ������������ ��������� ��������, � ����� �������� � ��������� VBA. ��������� �������� � �������������� � ��������� ��������� �������� � ������� VBA �������� � ����� 11.
���������� ������ �������� ����� ������ ����� � �������� — �������� ���� ������ (�������������� ���������� vbCr) � ������� �������� Text ��� ������� Insert Before ��� Insert After. ����� Add, ����������� � ���������� Paragraphs, ��������, �� �� ����� ������ � ����������.
����������� ��� � ��� ������, ���� ��� ���������� ���������� ����� ����� � ��������� ��� ���������� �������, � �� � �� ������ ��� �����.
��������� ������� ��������� ��� ���������� ������� — ��� ��� ���� � ��������� �������� ���� ������. ��� ��� �������� ������������� �������� �� ���� ������ ��������� Word � ������������� ��������� �������.
��� �������� |
������������� ������ �… |
Font |
��������������� �������� ������� ������� �������������� ��������, ����� ��� Name, Size � Bold. �� ��������� �������� �� ������ �������� ���������������� ������ � ����� ������ ��������� �������������� �������� Range, �� ��������� � �������� Font, �� ������ �� ��� ������ � ����������� ��������� |
Paragrap |
��������������� �������� ������� ������� �������������� �������, ����� ��� hFormat LeftIndent ��� LineSpacing |
Style |
��� ����� ������� ��� ������, ������������ � ��������� ��� ���������� ������� |
Borders |
������� ������ ������ |
Tabstops |
���� � ������������ ����� ���������. �� ������ �������� ������ � ���� ��������� ������ � ������� �������� Paragraph, � �� ��������������� ����� ��������� ��� ���������� ������� |
Содержание
- VBA PDF (бесплатные загрузки)
- Примеры Word VBA «Шпаргалка»
- Учебное пособие по макросам Word VBA
- Пример простого макроса Word
- Объект документа Word
- Документы
- Диапазон, выделение, абзацы
- Примеры макросов Word
Добро пожаловать в наше мега-руководство по Word VBA / макросам!
Эта страница содержит:
-
- Учебное пособие по Word VBA в формате PDF (бесплатная загрузка)
- Word VBA «Шпаргалка», содержащая список наиболее часто используемых фрагментов кода Word VBA.
- Полное руководство по Word VBA / Macro.
- Список всех наших руководств по макросам 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», чтобы запустить макрос.
Доброго времени суток всем подписчикам и читателям блога scriptcoding.ru. В этой статье мы продолжим изучать класс Selection, который показывает, как выделить фрагмент текста в документе Word.
Для начала давайте вспомним, что выделение фрагмента текста осуществляется следующим образом: в большинстве случаев нужно выбрать несколько фрагментов, для этого сначала выбираем один нужный фрагмент, далее удерживаем клавишу «Ctrl« и выбираем остальные фрагменты. Теперь перейдем к теме публикации…
Объект Word Selection содержит довольно много методов, большая часть из которых практически не используется, да и превращать блог в энциклопедию просто нет смысла. Поэтому, я решил разбить описание методов на две статьи, выбрав только те, которые чаще всего используются. В этой первой части я рассмотрю примеры работы с двумя категориями – методы с префиксомInsert и Move. Со второй частью можете ознакомиться в статье «Объект Word Selection — выделение текста, методы #2«.
Содержание
- Методы Insert… – выделение фрагментов текста в Word
- Методы Insert… – выделение фрагментов текста в Word
- Методы Insert… – выделение фрагментов текста в Word
- Методы Insert… – выделение фрагментов текста в Word
Методы Insert… – выделение фрагментов текста в Word
Примеры будут как для редактора VBA, так и для сценариев Windows Script Host, и так, начнем…
Методы с префиксом Insert… позволяют вставить текст в документ:
InsertAfter(text) и InsertBefore(text) – Вставка текста (text) в конец или в начало выделения. При отсутствии выделения вставка производится там, где находится курсор. Сам материал остается выделенным.
InsertBreak(type) — Вставляет страницу, колонку или секцию. Параметр type содержит значение константы WdBreakType:
- wdTextWrappingBreak — 11 — Конец текущей строки и продолжение вставки ниже изображения, таблицы или другого объекта. Материал продолжается на следующей пустой строке, которая не содержит таблицу, совмещенную с левой или правой границей.
- wdLineBreakClearRight — 10 — Перевод на новую строку.
- wdLineBreakClearLeft — 9 — Перевод на новую строку.
- wdColumnBreak — 8 — Разрыв колонки.
- wdPageBreak — 7 — Вставка новой страницы.
- wdLineBreak — 6 — Перевод на новую строку.
- wdSectionBreakOddPage — 5 — Начало нового раздела со следующей нечетной страницы.
- wdSectionBreakEvenPage — 4 — Начало нового раздела со следующей четной страницы.
- wdSectionBreakContinuous — 3 — Новый раздел без разрыва страницы.
- wdSectionBreakNextPage — 2 — Начало нового раздела со следующей страницы.
Прежде чем приступать к программированию, стоит сделать некоторое пояснение. По сути, ряд действий будут всегда одинаковыми – создание нового документа (за это будет отвечать функция или процедура Create_Doc). Изменяться будут только вызываемые методы.
Программный код на VBScript:
' ---------------------------------------------------------------------------- ' Объект Word Selection - методы ' Пример на языке VBScript - выделение фрагментов Word текста ' Selection-1.vbs ' ---------------------------------------------------------------------------- Option Explicit ' Глобальные переменные dim oWord, oDoc, oSel, i ' Процедура создания нового документа Sub Create_Doc() Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() Set oSel = oWord.Selection oWord.Visible = True End Sub Sub Insert_After_Before() With oSel .Text = "как выделить фрагмент текста " .InsertAfter " ............Конец" .InsertBefore "Начало...... " .EndOf .InsertBreak 6 End With End Sub call Create_Doc call Insert_After_Before
Давайте посмотрим, что данный пример делает. При вызове процедуры Insert_After_Before происходит добавление в документ текстовой строки, далее в конец добавляется фраза » …………Конец», а в начало — «Начало…… «. Потом происходит перевод курсора в конец и добавление перевода строки.
Пример на JScript:
// ---------------------------------------------------------------------------- // Объект Word Selection - методы // Пример на языке JScript - выделение фрагмента в тексте // Selection-1.js // ---------------------------------------------------------------------------- // глобальные переменные var oWord, oDoc, oSel, i function Create_Doc(){ oWord = WScript.CreateObject("Word.Application"); oDoc = oWord.Documents; oDoc.Add(); oSel = oWord.Selection; oWord.Visible = true; } function Insert_After_Before(){ with(oSel){ Text = "как выделить в документе фрагмент текста "; InsertAfter(" ............Конец"); InsertBefore("Начало...... "); EndOf(); InsertBreak(6); } } Create_Doc(); Insert_After_Before();
Для VBA мы просто запускаем редактор кода, добавляем новый модуль и прописываем код, в моем случае имя модуля — Module1:
Sub Module1() ' ---------------------------------------------------------------------------- ' выделение в Word фрагментов текста ' ---------------------------------------------------------------------------- Dim oWord1 As Object, oDoc1 As Object, oSel1 As Object, i Set oWord1 = CreateObject("Word.Application") Set oDoc1 = oWord1.Documents oDoc1.Add Set oSel1 = oWord1.Selection oWord1.Visible = True '*************************************** With oSel1 .Text = "как выделить фрагмент текста " .InsertAfter " ............Конец" .InsertBefore "Начало...... " .EndOf .InsertBreak wdLineBreak End With '*************************************** End Sub
И так, с одной теоретической частью мы закончили и написали программный код, теперь можно приступить к следующей части.
Методы Insert… – выделение фрагментов текста в Word
InsertCaption(Label, Title, TitleAutoText, Position, ExcludeLabel) — Вставляет заголовок сразу после или перед указанным выбором. Обязательным является только параметр Label.
Label – Нумерационный заголовок. Параметр может быть строкой или значением константы WdCaptionLabelID:
- wdCaptionEquation — Уравнение
- wdCaptionFigure — Рисунок
- wdCaptionTable – Таблица
Если метка (Label) не определена, то возникнет ошибка. Для определения метки надо использовать метод Add коллекции CaptionLabels, например:
Applicationd.CaptionLabels.Add Name:="Рисунок"
Title– Заголовок, который будет отображаться справа от метки.
TitleAutoText– Авто-заголовок, перекрывает параметр Title.
Position— Указывает, будет ли вставлен заголовок выше или ниже. Может быть одной из констант WdCaptionPosition:
- wdCaptionPositionAbove — 0 — Метка название добавляется выше.
- wdCaptionPositionBelow — 1 — Метка название добавляется ниже.
ExcludeLabel— TRUE — отключить метку, заданную в параметре Label. FALSE — включить метку. Дополнительно.
Ниже я приведу примеры, что бы не дублировать программный код, я привел только содержимое процедуры Sub Insert_Caption.
' VBScript Sub Insert_Caption() oWord3.CaptionLabels.Add "Номер" For i = 0 To 10 oSel3.InsertCaption "Номер", " как выделять фрагменты текста " & i oSel3.InsertBreak 6 Next End Sub
Тут используется цикл for для вставки нескольких фрагментов — «Урок 6 по VBScript: Циклы for…next и for each…next«.
//JScript function Insert_Caption(){ oWord4.CaptionLabels.Add("Номер"); for (i = 0; i<=10; i++){ oSel4.InsertCaption("Номер", " выделение фрагмента текста " + i); oSel4.InsertBreak(6); } }
Тут тоже используется цикл for, но уже для JS кода — «Урок 9 по JScript — оператор цикла for«.
' VBA oWord5.CaptionLabels.Add "Номер" For i = 0 To 10 oSel5.InsertCaption Label:="Номер", Title:=" Фраза VBA Selection " & i oSel5.InsertBreak wdLineBreak Next
Обратите внимание, чтоимена переменных в примерах отличаются, это пришлось сделать с технических причин – в глазах поисковых систем статья становится заспамленой. Хорошо, давайте двигаться дальше.
Методы Insert… – выделение фрагментов текста в Word
InsertDateTime(DateTimeFormat) – Метод позволяет вставить дату или время в документ, или одновременно оба значения. Помимо параметра DateTimeFormat есть еще четыре, но они практически не используются.
DateTimeFormat – Необязательный параметр, позволяет указать формат даты и времени.
' VBScript Sub Insert_Date With oSel4 .Text = "как выделить фрагмент текста " .EndOf .InsertBreak 6 .InsertDateTime .InsertBreak 6 .InsertDateTime "MMMM dd, yyyy" .InsertBreak 6 .InsertDateTime "MMMM dd, yyyy - H:M:S" End With End Sub
Обратите внимание на оператор with, он позволяет не писать каждый раз имя класса.
//JScript function Insert_Date(){ with(oSel4){ Text = " выделение фрагментов Word текста "; EndOf(); InsertBreak(6); InsertDateTime(); InsertBreak(6); InsertDateTime("MMMM dd, yyyy"); InsertBreak(6); InsertDateTime("MMMM dd, yyyy - H:M:S"); } }
Тут логика работы аналогична.
' VBA With oSel5 .Text = " как выделить в Word фрагмент текста " .EndOf .InsertBreak wdLineBreak .InsertDateTime .InsertBreak wdLineBreak .InsertDateTime "MMMM dd, yyyy" .InsertBreak wdLineBreak .InsertDateTime "MMMM dd, yyyy - H:M:S" End With
Хорошо, осталось рассмотреть последнюю третью часть статьи.
Методы Insert… – выделение фрагментов текста в Word
InsertFile(FileName) – Позволяет вставить содержимое указанного файла в документ, параметр FileName хранит имя или путь к файлу, если путь отсутствует, то будет подразумеваться текущий каталог.
InsertNewPage — Вставляет новую страницу в место, где находится указатель.
InsertParagraph— Заменяет выделение знаком абзаца.
InsertParagraphAfter— Вставляет знак абзаца после выделения .
InsertParagraphBefore— Вставляет новый абзац перед выделением.
Методы с префиксом Move… также встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:
MoveLeft(), MoveRight(), MoveUp(), MoveDown() – Методы дают возможность переместить курсор влево, вправо, вверх и вниз. Все четыре метода принимают следующие параметры (Unit, Count, Extend), являющиеся необязательными:
Unit — Блок, по которым выбор должен быть перемещен. Параметр Unit содержит значения константы wdUnits.
Count – Единица перемещения. Значение по умолчанию 1.
Extend — Может быть либо wdMove (по умолчанию) или wdExtend.
MoveEnd(), MoveStart() – Перемещение курсора в конец или начало выделения, параметры — Unit, Count.
MoveStartUntil(), MoveStartWhile(), MoveEndUntil(), MoveEndWhile() – Позволяют переместить курсор к заданному символу или последовательности символов. Параметры Cset (обязательный) и Count (дополнительный):
Cset — Один или несколько символов. Аргумент является чувствительным к регистру.
Count – Задает целое или отрицательное значение, на которое происходит перемещение курсора.
Move(Unit, Count) – Фактически, тут мы может указать направление (Count) и текстовую единицу (Unit).
Логика работы для следующих примеров остается та же – меняется только код вызываемой процедуры. Фактически, код для языка VBScript и VBA является идентичным.
' VBScript Sub Get_Move() With oSel6 ' вставляем в документ фразу сто раз For i = 0 To 10 .Text = "как выделить фрагменты нужного текста " ' Перемещаем курсор в конец .EndOf Next For i = 0 To 300 .MoveLeft Next For i = 0 To 100 .MoveRight Next For i = 0 To 4 .MoveUp Next .MoveStartUntil "Word" For i = 0 To 15 .Move 2, 5 Next End With End Sub
Видим, что в данном коде мы использовали несколько операторов for.
//JScript function Get_Move(){ with(oSel6){ for (i=0; i<=10; i++){ .Text = "Текстовая строка: выделение фрагментов текста "; .EndOf(); } for (i=0; i<= 300; i++){ .MoveLeft(); } for (i=0; i<= 100; i++){ .MoveRight(); } for (i=0; i<= 4; i++){ .MoveUp(); } .MoveStartUntil("Word"); for (i=0; i<= 15; i++){ .Move(2, 5); } } }
Обратите внимание на приведенные в самом начале статьи примеры кода для языков VBA и VBScript, в макросе мы можем использовать именованные константы объекта Word, но в теле Windows Script Host сценария нет, так как там они не доступны. Описание свойств класса Selection я рассмотрел в этой статье.
- Объекты
Range и Selection.
Работа с текстом. - Выделенный
текст. - Текстовый
диапазон. - Выделение
текста. - Вырождение
диапазона. - Форматирование
текста. - Поиск
и замена - Коллекция
Tables.
1.Объекты Range и Selection.Работа с текстом.
Работа с текстом осуществляется с помощью ряда объектов.
Весь текст документа можно представить в виде пирамиды, основой которой
являются символы, а вершиной – собственно документ. В иерархическом порядке
объектов VBA документ Word можно представить как:
Символы (Characters) ® Слова (Words) ®
Предложения (Sentences) ® ®Абзацы
(Paragraphs) ®Разделы
(Sections) ®Документ
(Document)
Кроме этих объектов, явно указывающих на тот или иной
элемент документа, в VBA имеется два объекта, которые позволяют работать с
текстом как с целым, без явного структурного разделения: объект Rahge ассоциируется с любым фрагментом документа, а объект Selection – с любым выделенным фрагментом текста. Оба эти
объекта похожи по своему действию, однако они различаются по своим
функциональным возможностям.
2.Выделенный текст.
Объект Selection является одним из
базовых объектов. Это глобальный объект и предварительного объявления для него
не требуется. в целом этот
объект любое выделение в документе, а в случае если выделение вырождено, т.е.
ничего не выделено, то объект описывает текущее положение указателя.
Эта особенность часто используется для получения ссылки на
объект, описывающий текущий элемент документа.
Пример: получить ссылку на объект типа Paragraphs,
являющегося семейством всех выделенных или затронутых выделением абзацев.
Dim e As Paragraphs
Set e = Selection.Paragraphs
MsgBox e.Count
Свойством по умолчанию для объекта типа Selection
является свойство Text, возвращающее выделенный
текст.
Selection.[.Text][=Text]
Для замены текущего выделенного текста используется метод
TypeText.
Selection.TypeText(Text)
Пример: вставляем в документ текст «ХХХ» и начинаем новый
абзац.
With
Selection
.TypeText Text:=«XXX»
.TypeParagraph
End With
Для управления параметрами вставки текста можно использовать
свойство ReplaceSelection.
Selection.ReplaceSelection [=Boolean]
Если true – текущее выделение
замещается, если False – то вставлять перед
выделением.
3.Текстовый диапазон. Объект Range
предназначен для выделения и обработки фрагментов текста. Этот объект является
семейством многих объектов.
Например для выделения
абзаца, в котором сейчас находится указатель достаточно использовать код
Selection.Paragraphs(1).Range.Select
Область текста,
связанная с объектом типа Range, характеризуется
начальными и конечными символами. Для получения информации о них нужно
использовать свойства Start и End.
objrange.Start [=Position]
objrange.End [=Position]
параметр Position (типа Long) позволяет задать индекс символа, с которого должен
начаться или которым должен закончится фрагмент
текста, связанного с данным объектом objRange.
Для получения ссылки на текстовый диапазон можно
использовать метод Range.
ObjDocumet.Range(Start, End)
Параметр Start указывает на индекс
символа, с которого должен начаться диапазон, а параметр End
– на индекс последнего символа. Индексы символов соответствуют их порядковым
номерам в семействе Words, ссылку на которое
возвращает свойство Words объекта Document.
4. Выделение текста.
Формально объект Range связан
только с диапазоном текста. Этот диапазон может быть никак не связан с текущим
положением курсора или выделением. Однако диапазон, связанный с объектом Range, можно выделить в любой момент времени с помощью метода
Select.
ObjRange.Select
Пример: выделить второй абзац текущего документа.
ThisDocument.Paragraphs(2).Range.Select
5.Вырождение диапазона.
Для создания вырожденного диапазона можно использовать метод
Collapse.
objRange.Collapse [(Direction)]
Параметр Direction позволяет задать направление, в котором будет
выполнено вырождение. Если параметр имеет значение wdCollapseStart,
то вырождение выполняется в направлении начала диапазона, т.е. End:=Start. Если параметр имеет значение wdCollapseEnd, то Start:=End
Пример: снятия выделения в документе, курсор помещен в конец
выделеного диапазона.
Selection.Collapse wdCollapseEnd
6.Форматирование текста.
Объект Range чаще используется как
инструмент для форматирования выделенного текстового диапазона. Для этого, кроме
свойства объекта Font объект Range имеет
целый ряд свойств, позволяющих настроить параметры шрифта данного диапазона.
Свойство Bold – позволяет установить параметры
жирного начертания символов.
Если свойство имеет значение True, то начертание жирное , если False–
нежирное. Свойство также может возвращать значение wdUnderfined,
указывающее на смешанное начертание. Для установления стиля начертания можно
использовать следующие значения True,
False или wdToggle,
позволяющие переключить текущее написание шрифта.
objRange.Bold
[=Boolean]
Свойство CombineCharacters
Свойство позволяет сжать все символы выделенного диапазона. Если свойство имеет значение true, то выполняется сжатие.
Свойство FilTextWidth
Свойство позволяет указать ширину(в
текущих единицах измерения, в которых должен быть размещен данный диапазон).
Размер шрифта и ширину межсимвольного пространства Word подбирает автоматически
В приведенном ниже примере показан код, позволяющий уместить
текущее выделение на отрезке документа , ширина
которого эквивалентна пяти сантиметрам.
Selection.Range.FilTextWidth=CentimetersToPoints(5)
Свойство objRange.FormattedText
Свойство возвращает ссылку на объект типа Range ,
который ассоциируется с текстом в пределах данного диапазона objRange,
имеющего специфическое форматирование.
Cвойство
Italic –
позволяет установить параметры курсивного начертания символов.
Свойство ListFormat –
возвращает ссылку на объект типа Listformat, содержащего
нумерованные или маркированные списки, используемые в данном диапазоне.
Свойство ListParagraph
Свойство возвращает ссылку на объект типа ListParagraph,
содержащего нумерованные абзацы, имеющиеся в данном диапазоне.
Свойство Shading – возвращает ссылку на объект типа Shading, позволяющего указать цвет и
формат заливки для данного диапазона.
Свойство Revisions
Свойство возвращает ссылку на объект типа Revisions , который
связан с исправлениями , находящимися в данном диапазоне.
Свойство Showall[=Boolean]
Свойство позволяет указать на отображение непечатаемых
символов: табуляций, пробелов, символов абзаца, скрытого текста. True -символы
отображаются.
Свойство Style[=Style]
Свойство позволяет задать стиль для данного абзаца. Параметр
Stile(тип Stile) позволяет указать один
из существующих типов.
Свойство Underline[=Underline]
Свойство позволяет указать , как
должен быть подчеркнут текст в данном диапазоне. Параметр Underline( тип Underline) позволяет указать тип
линии подчеркивания
Метод InsertAfter вставляет
заданный текст в конце диапазона или выделения.
Синтаксис:
objRange.InsertAfter(Text)
Пример:
ActiveDocument.Range.InsertAfter
«пример»
Метод InsertParagraph
позволяет заменить заданный диапазон символов или выделения на новый абзац.
После его использования объект Range отождествляется
с новым абзацем.
Метод InsertSymbol
предназначен для вставки символа в заданное место диапазона или выделения. При
использовании данного метода содержимое диапазона или выделения удаляется. Если
этого не требуется, то перед вызовом этого метода следует использовать метод Collapse.
Синтаксис:
ObjRange.InsertSimbol (CharacterNumber, Font, Unicode)
Параметр CharacterNumber
определяет код символа. Параметр Font
определяет имя шрифта, используемого в качестве источника символов. Параметр Unicode если значение True,
то вставляется юникодовый символ, заданный аргументом
CharacterNumbe. В противном случае (по умолчанию False) будет вставлен символ ANSI, заданный аргументом CharacterNumbe.
Пример:
Selection.Collapse direction:=wdCollapseStart
Selection.InsertSymbol characterNumber:=171, Font:=»Symbol», unicode:=False «
Метод Paste позволяет
вставить содержимое буфера обмена в заданный диапазон или выделение. При его
использовании содержимое диапазона или выделения заменяется содержимым буфера
обмена. В случае если требуется вставить абзац из буфера обмена без замены
текущего абзаца, перед вызовом этого метода следует использовать метод Collapse.
7.Поиск и замена
Поиск и замена- это
стандартные инструменты любого приложенияMicrosoft Office .Как правило, команды
вызова соответствующих диалоговых окон располагаются в меню Правка(Edit). Инструменты поиска и
замены в VBAреализуются
с помощью объектов Find и Replacement.
Задачи по поиску и замене требуют своей реализации в VBA в
редких случаях, например при частом поиске и замене одного и того же сочетания , вложенном поиске или при контекстном поиске.
Стандартный инструмент поиска и замены работает следующим образом
: вы открываете окно диалога Поиск и замена(Find and Replace) , вводите в соответствующие поля необходимые значения , определяете дополнительные параметры поиска и нажимаете
кнопку Поиск(Find) или
Заменить(RepleceОднако
при частом поиске или замене одних и тех же значений для этой операции удобно
назначить кнопку на панели инструментов , комбинацию клавиш или разместить ее в
контекстном меню. Для реализации этой задачи нужно сначала создать
соответствующий макрос.
Для упрощения (ускорения) создания соответствующего
программного кода можно автоматизировать процесс написания макроса.
- Подготовить
документ к поиску - Выбрать
команду Сервис +Макрос +Начать запись - В
поле Имя макроса введите имя макроса , в поле
Описание добавьте описание макроса - Нажмите
кнопку Ok – откроется панель инструментов Остановит запись , содержащая кнопки управления записью макроса:
Остановить запись и Пауза. - Выберите
команду Правка +Найти
Укажите необходимые параметры
поиска и нажмите кнопку Найти
На панели инструментов Остановить запись нажмите кнопку Остановить
запись
Откройте окно редактирования Visual Basic for Application и
перейдите к записанному макросу.
Выполните ручное редактирование
макроса
В приведенном ниже примере
показан код, позволяющий заменить четыре идущих подряд символов пробела одним
символом табуляции
Пример:
Sub ReplaceSpace4()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text=space(4)
.Replacement.text=”^t”
.forward=true
.Wrap=WdfindWrap.wdfindall
End With
Selection.Find.Execute Replace:=wdReplaceall
End Sub
В ситуации ,
когда нужно найти фрагмент документа , а в нем еще один фрагмент – задача
становится неоднозначной. В этом случае можно создать два макроса , один из которых будет вызываться и другого.
В приведенном ниже примере
реализован одкратно вложенный поиск и замена , однако число вложений может быть и больше.
Переменная strText(тип string) содержит текст, вкотром осуществляется поиск .
Если заданный текст будет найден (метод Execute возвращает True), то осуществляется вызов процедуры
ReplaceSpace4,
показанной в предыдущем примере .
Пример:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text= strText
If .Execute Then ReplaceSpace4
End With
8.Коллекция Tables.
Таблица представляет собой
упорядоченную структуру, предназначенную для хранения организованных в виде
строк и столбцов наборов данных. Элемент таблицы, находящийся на пересечении
строки и столбца, называется ячейкой.
Таблица Word
имеет такую же структуру, как и электронная таблица Excel
– элемент таблицы, находящийся на пересечении строки и столбца, называется
ячейкой и идентифицируется по имени столбца и номеру строки.
В VBA для доступа к таблицам
используется объект Tables, являющийся семейством
объектов Table, каждый из которых связан с конкретной
таблицей. Для получения ссылки на семейство Tables
можно использовать свойство Tables объекта Document.
Общее число таблиц, имеющихся в
документе, содержится в свойстве Count. Для
получения доступа к конкретной таблице можно использовать метод Item, который является методом по
умолчанию.
Синтаксис:
Set oblTable=objDocument.Tables.Item(Key)
Параметр Key,
является уникальным идентификатором каждой таблицы, хранящейся в объекте Tables.
Для создания новой таблицы
используется метод Add объекта Tables. Этот метод возвращает ссылку на созданную таблицу(Table).
objTables.Add
(Range, NumRows, NumColums)
Параметр Range
позволяет указать область документа, куда будет вставлена таблица. Если
параметр не пустой, т.е. имеется выделенная область, то она будет заменена
вставляемой таблицей.
Параметры NumRows,
NumColums позволяют указать на число строк и
столбцов таблицы.
Пример: создадим таблицу в выделенном
месте или там где стоит курсор.
Set instable = ActiveDocument.Tables.Add(Selection.Range, 4, 10)