Vba word знак абзаца

ты прав. если речь идет о поиске редко встречающихся слов, метод Find работает весьма быстро. вероятно он использует индекс для ускорения поиска. в твоем же случае поиск вообще не нужен. так как ты ищешь то, из чего состоит документ — параграфы(абзацы). не проще ли их просто перебрать?.
к тому же метод Find работает посредством объекта Selection (который является средством взаимодействия с пользователем, т.е в данном случае бесполезен; еще и медленнен, вероятно из-за того, что задействует оконые процедуры перерисовки). посмотри на строки 12 и 13

Visual Basic
1
2
.Parent.Select
Selection.Paragraphs(1).Range.Select

здесь происходит получение предка найденного символа(вероятно, его предок — параграф), вызов метода выделения. далее, обращение к первому(и единственному в данном случае!) параграфу из коллекции параграфов в выделении, наконец мы добираемся до содержимого параграфа и (в который уже раз) выделяем его. после выполнения строки 13 вообще ничего не меняется.
я конечно, не видел твоего документа, но для моего *.doc из 85 страниц твой код выполняется 28сек, а мой 8 сек. поэтому я и решил предложить тебе другой код. а так, конечно, оба кода рабочие и 20 сек несущественно.

Sub Макрос()

    Dim find_rng As Range, find As find

            ‘1. Откл. монитора.
    Application.ScreenUpdating = False

        ‘2. Создание объектов, которые будут искать.
    Set find_rng = ActiveDocument.Range(0, 0)
    Set find = find_rng.find

        ‘3. Настройка поиска.
    find.Text = «^b»
    find.Wrap = wdFindStop

        ‘4. Поиск.
    Do While find.Execute = True
        ‘1) Вставка знака абзаца перед символом «разрыв раздела», если знака абзаца нет.
        If find_rng.Characters.First.Previous <> Chr(13) Then
            find_rng.InsertParagraphBefore
        End If
        ‘2) Превращение рейнджа в точку вставки и установка точки вставки после найденного фрагмента.
        find_rng.Collapse Direction:=wdCollapseEnd
    Loop

        ‘5. Вкл. монитора.
    Application.ScreenUpdating = True

        ‘6. Сообщение.
    MsgBox «Готово.», vbInformation

    End Sub

[свернуть]

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

VBA-Word Поиск и замена символов…

Как удалить из текста «Символ абзаца» при условии, что он присутствует в тексте в комбинации символов — «Символ абзаца»+»любая русская буква в нижнем регистре»


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2007 (Пт) 14:20

Символ абзаца не поддерживается при поиске по регэкспу.

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

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


Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 20.04.2007 (Пт) 14:42

Знак абзаца ^p (галочка и английская буква p)

У меня была проблемы в своё время. Был файл, где были написаны строки текста через одну пустую строку, т.е.

— текст

— пустая строка (как бы щёлкнули лишний раз Enter)

— и опять текст.

Надо было удалить эти пустые строки. Я сделал это через замену (Ctrl+H): ^p^p заменил на ^p

P.S. Знак абзаца есть в меню Поиска (Ctrl+F) — Замены (Ctrl+H) — нажмите кнопку Больше — Специальный — Знак абзаца


Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 20.04.2007 (Пт) 14:54

Про стандартный механизм поиска и замены я помню.

И, если речь идёт о лишних пробелах или абзацах, то без вариантов — поиск и замена.

Но здесь надо найти символ абзаца, проверить код следующего за ним символа и, если это код в интервале 224-255, то удалить знак абзаца или заменить его на пробел.

То есть без макроса не обойтись. Знаю, что там всего пять строк кода, но VBA-Word знаю не очень.


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2007 (Пт) 15:08

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


Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 20.04.2007 (Пт) 17:26

я так делал:

Код: Выделить всё
Const RusArray As String = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
With Selection.Find
       .ClearFormatting
       .Replacement.ClearFormatting
       .Wrap = wdFindContinue
       .Forward = True
       .Format = False
       .MatchCase = True

       For i = 1 To Len(RusArray)
           myChar = Mid(RusArray, i, 1)
           .Text = "^p" & myChar
           .Replacement.Text = " " & myChar
           .Execute Replace:=wdReplaceAll
       Next
End With

но уверен что есть более быстрый вариант…

Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.


Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 20.04.2007 (Пт) 17:52

Спасибо!



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

this is my first post. I don’t know why I get para. format symbols showing in my listbox.

I added text to a word table, sorted it and transferred to listbox. I tried with different selection.clearformatting methods on the table but didn’t work. I need to take text from the listbox without the para. symbols and use to search a text. Snippit below

enter image description here

Do Until n = nmax

With Documents("lb2doc")

    .Tables(1).Cell(i, 1).Range.Text = words(n)
    .Tables(1).Cell(i, 2).Range.Text = disctime(n)

    n = n + 1
    i = i + 1

End With

Loop

Dim imax As Long
imax = i

i = 1
'sort table
Documents("lb2doc").Tables(1).Columns(1).Select
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend

Selection.Sort ExcludeHeader:=False, FieldNumber:="Column 2", _
    SortFieldType:=wdSortFieldNumeric, SortOrder:=wdSortOrderDescending, _
    FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
    wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
    wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
    wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
    LanguageID:=wdEnglishUS, SubFieldNumber:="Paragraphs", SubFieldNumber2:= _
    "Paragraphs", SubFieldNumber3:="Paragraphs"

Dim j As Long
j = 0

ListBox2.ColumnCount = 3
ListBox2.ColumnWidths = "0;60;20"

Do Until i = imax

ListBox2.AddItem
ListBox2.List(j, 1) = Documents("lb2doc").Tables(1).Cell(i, 1).Range.Text
ListBox2.List(j, 2) = Documents("lb2doc").Tables(1).Cell(i, 2).Range.Text

i = i + 1
j = j + 1

Loop

������ � ������� � 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 word заменить картинку
  • Vba word заменить все слова
  • Vba word замена таблицы
  • Vba word выбрать строку в таблице
  • Vba word выбрать строки