Страницы: 1 2 След.
RSS
Как скопировать определенный текст через VBA в Word
 
Друзья прошу помощи. Подскажите как выделить через макрос текст Wordа который допустим распологается между "Слово1" и "Слово2". Возможно ли это осуществить?
Изменено: evgenij_sar - 23.04.2025 09:34:31
 
evgenij_sar, вопрос в том как найти или как скопировать?
По вопросам из тем форума, личку не читаю.
 
Нужно просто чтобы выделился текст чтобы потом копировать ctrl+c. Проблема решена. Однако текст выделяет с пробелами между Словом1 и словом2. Как теперь сделать чтобы выделить лишь текст без пробелов.
В данный момент получается так:  слово1__пробел до__АБЗАЦ__пробел после__слово2 ====> пробел__АБЗАЦ__пробел, а нужно чтобы было просто АБЗАЦ

Код
Sub Выделить_между()
    Dim MyRange As Range, rStart&, rEnd&
    Set MyRange = ActiveDocument.Content
    With MyRange
        With .Find
            .ClearFormatting
            .Text = "Слово1"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute
            If .Found Then rStart = MyRange.End: rEnd = rStart
        End With
    End With
    Set MyRange = ActiveDocument.Content
    With MyRange
        With .Find
            .Text = "Слово2"
            .Execute
            If .Found Then rEnd = MyRange.Start
        End With
    End With
    If rEnd > rStart Then
        ActiveDocument.Range(rStart, rEnd).Select
        Selection.Copy
    End If
End Sub
Изменено: evgenij_sar - 23.04.2025 15:46:16
 
Как вариант без оптимизации и с учетом нескольких пробелов но не неразрывных, но есть чуствительность к регистру
Скрытый текст


но в целом можно сперва найти по маске диапазон <слово1>*<слово2>  и если найдено то в нем также искать начало и конец.

Скрытый текст
Изменено: БМВ - 23.04.2025 22:00:07
По вопросам из тем форума, личку не читаю.
 
Спасибо большое, буду пробовать. По маске не получится, потому что будет постоянно меняться содержимое текста- Абзац. В моем случае получается выделение самого текста- Абзац и одного пробела сверху и несколько пустых строк снизу. Поэтому дальнейшая вставка текста-Абзац выходит некорректно. Приходится вручную убирать эти пробелы.  
 
evgenij_sar,  все можно сделать, Дали б пример реальный, а не условный , было б проще.  Маска не учитывает что между слово 1 и 2
разве что чуствительна к регистру даже если  отказаться от этого то сперва ищем слово1. потом берем регион от старта найденного и до последнего в документе, ищем слово2. получаем Start и  End нужного фрагмента а далее в зависимости от того что нужно , по словам или иными путями найти в нем начало нужного и конец  - дело техники.
Изменено: БМВ - 24.04.2025 07:50:06
По вопросам из тем форума, личку не читаю.
 
К сожалению ни один из примеров не работает.
Попробую немного по другому обьяснить.
Есть документ в ворде, типа акта с таким таким содержимым один в один с жирным шрифтом и подчеркиванием:
ЗАКЛЮЧЕНИЕ
ТЕКСТ
ТЕКСТ
ТЕКСТ



Подпись

Нужно чтобы копировался только
ТЕКСТ
ТЕКСТ
ТЕКСТ
без одного пробела сверху и пустых строк снизу.
 
А вот так выделяется с первым макросом. И так копируется к сожалению. Вот вся суть проблемы
 
Цитата
БМВ написал:
Дали б пример реальный, а не условный , было б проще.
попробую пояснить, пример текста в Word ;-) . Много тонкостей, ведь снизу это не пробелы, а переводы строк.
Изменено: БМВ - 24.04.2025 09:25:50
По вопросам из тем форума, личку не читаю.
 
evgenij_sar, если все так как на картинке, то проще удалить Заключение, подпись и пустые абзацы. Но скорее всего вы опять показали только часть данных
 
Заключение и подпись выставляет программа сама и всё это должно выводится на печать, поэтому без них никак.
 
Цитата
написал:
поэтому без них никак
выводите на печать, запускаете макрос, который удаляет лишнее, выделяет все оставшееся, копирует. Закрываете файл без сохранения, получаете в буфере нужный текст, Т.е то, что вы  реализовали своим макросом но более просто
Изменено: bigorq - 24.04.2025 14:57:51
 
С этим понятно) В прочем так и делаю, однако в с буфера приходится вставлять данные с документа в другую программу, а там вставляется с пробелами. Приходится удалять вручную. Просто если не будет слов заключение и подпись, все равно перед и после другие слова стоят. Просто то что хочу скопировать это всего лишь мелкий фрагмент который стоит где то по середине документа на 10 странице из 20.
Изменено: evgenij_sar - 24.04.2025 15:10:54
 
evgenij_sar,  последний раз и умываю руки. Дайте файл с которым работать. Вы в  #3
Цитата
evgenij_sar написал:
В данный момент получается так:  слово1__пробел до__АБЗАЦ__пробел после__слово2
а на самом деле там не пробелы, а переводы строк или еще что, в любом случае это надо убирать, а чтоб убрать нужно знать что убирать.
По вопросам из тем форума, личку не читаю.
 
Там переводы строк.
Сверху одна и снизу строки 4.
Больше там ничего нет. Просто нужно чтобы выделялся только
ТЕКСТ
ТЕКСТ
ТЕКСТ
без пустых строк
Сам текст внутри он может быть разным абсолютно каждое заключение.
Изменено: evgenij_sar - 24.04.2025 15:30:40
 
Вот как получается, файл прикрепил. Выделение и копирование автоматом по нажатию кнопки, но как видим пустые строки тоже копируются с текстом.  
Изменено: evgenij_sar - 24.04.2025 16:06:26
 
Скрытый текст


а так и пробелы до и после проигнорит

Скрытый текст
Изменено: БМВ - 24.04.2025 23:26:34
По вопросам из тем форума, личку не читаю.
 
Проверил, ничего не выделяет. Не понимаю почему. Ни первый ни второй макрос не работает. Мистика...
 
3 кнопки - все работают на примере, естесвенно с разным результатом.
По вопросам из тем форума, личку не читаю.
 
Спасибо большое! Но у меня все равно не выделяется почему то... Буду кумекать...
 
а через штатный поиск (Ctrl+F) с теми же масками ищет?
По вопросам из тем форума, личку не читаю.
 
Да конечно.
Самое интересное то когда я вставляют свой текст за место вашего в файле Example, то ничего не получается.
Например убираю
ЗАКЛЮЧЕНИЕ
ТЕКСТ
ТЕКСТ
ТЕКСТ

Подпись
И потом вставляю свои данные и уже не работает.
Само собой слова заключение и подпись также вставляются с другого документа
Да еще заметил что с 3 макросом в файле не выделяется последняя точка.
Изменено: evgenij_sar - 25.04.2025 13:28:05
 
Вот файл с измененным содержимым
 
Цитата
evgenij_sar написал:
Самое интересное то когда я вставляют свой текст за место вашего в файле Example, то ничего не получается.
Все что работает , работает в файле что был в #16.  Если что-то не работает нужно смотреть на конкретном примере.
По вопросам из тем форума, личку не читаю.
 
Спасибо... буду копаться дальше до истины)
Итог тот же. При удалении текста и вставки своего в документ макросы не работают, конечно кроме моего первого, который выделяет и пустые строки и текст.  Не понятно что мешает работать макросу с одними и теми же замыкающими текст словами. Шрифт тот же, подчёркивания. Разница только в методе ввода. От руки или вставка.  
Изменено: evgenij_sar - 25.04.2025 22:54:48
 
А влияют ли слова располагающиеся на одной строке до слова Заключение и после слова Подпись? Эти слова располагаются через пробел.  
Изменено: evgenij_sar - 25.04.2025 23:07:54
 
На примере по маске не ищется слово ЗАКЛЮЧЕНИЕ. Стоит его ввести в ручную и все корректно отрабатывает.
Маску если заменить на <Заключение>, все работает. В XML видно что там кроме первой литеры все прописные,
<w:u w:val="single"/></w:rPr><w:t>Заключение</w:t></w:r></w:p><w:p w:rsidR="00616EF3" w:rsidRDefault="00616EF3" w:rsidP="00616EF3"><w:pPr><w:widowControl w:val="0"/>
По вопросам из тем форума, личку не читаю.
 
Это значит что определяется как с другим регистром?  
 
При поиске по маске регистр варен. А вот как отформатировано в файле оригинале, что выглядит как все капсом, я не знаю.
По вопросам из тем форума, личку не читаю.
 
Есть программа которая формирует на основании введенных данных итоговый документ и открывает его для печати. Потом сохраняет его в своей базе. Шрифт всего документа Arial и заключение и подпись подчеркнуты всегда. Самый первый макрос прекрасно по волшебству с ним отрабатывает причём при любом шрифте, размере, прописных или заглавных, подчеркнутых и нет, но минус выделяет пустые строки, а вот последующие Вами предоставленные ругаются. Что в них общего и какая разница...  
Изменено: evgenij_sar - 26.04.2025 12:26:28
Страницы: 1 2 След.
Читают тему
Наверх