Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/88: Рейтинг темы: голосов - 88, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 69
Word

Поиск текста в таблице

11.12.2012, 23:09. Показов 17647. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли как-то организовать поиск текста в таблице? Или для этого достаточно обычного поиска текста?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2012, 23:09
Ответы с готовыми решениями:

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

Поиск текста в таблице файла Word и удаление строки с текстом
Здравствуйте, есть макрос по поиску и замене текста из таблицы Excel в шаблоне файла Word Dim WA...

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

6
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
12.12.2012, 06:47
SkyFlyStaR, можно использовать просмотр каждой ячейки. Но в больших таблицах это займёт много времени.
При использовании обычного поиска, нужно вот это учесть:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Procedure_3()
 
    Dim rTable As Word.Range
    
    Set rTable = ActiveDocument.Tables(1).Range
 
    With rTable.Find
        'Нужно указать "wdFindStop" иначе,
        'если ничего не будет найдено, то поиск продолжится
        'в остальной части документа.
        .Wrap = wdFindStop
    End With
 
End Sub
2
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 301
21.04.2020, 10:01
Скрипт, Добрый день!
Нашёл этот (уже старый пост), но, тем не менее:
Сижу пытаюсь реализовать следующее:
Выделить искомый текст (напр.: "Hello"), только в таблице (например №2).
Следующим кодом:
Visual Basic
1
2
3
4
5
6
7
Dim myRng1 As Range
Set myRng1 = ThisDocument.Tables(2).Range
    Do
        myRng1.Find.Text = "Hello"
        myRng1.Find.Wrap = wdFindStop
        Debug.Print myRng1.Find.Text
    Loop Until Selection.Find.Execute = False
Но, возникает проблема. Текст, находится и за границами таблицы. Т.е. ищется, и соответственно выделяется, во всём документе.
Цитата Сообщение от Скрипт Посмотреть сообщение
Visual Basic
1
2
3
4
'Нужно указать "wdFindStop" иначе,
'если ничего не будет найдено, то поиск продолжится
'в остальной части документа.
.Wrap = wdFindStop
Это не помогает....

Два вопроса и одна заметка.
Заметка:
Конечно, я могу сделать проверку, расположен ли выделенный текст, в таблице №2, с помощью:
Visual Basic
1
If ... Then
Вопросы:
  1. Что я делаю не так?
  2. И как вернуть (запросить) где находится выделенный или искомый текст?
0
1705 / 574 / 74
Регистрация: 10.04.2009
Сообщений: 9,287
21.04.2020, 10:17
а зачем перекручивать, код есть в посте №2, нужно номер таблицы изменить и искомое, если так сделать, взлетает?
0
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 301
21.04.2020, 10:59
Ципихович Эндрю,

Не по теме:

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
а зачем перекручивать, код есть в посте №2, нужно номер таблицы изменить и искомое
Да, не сильно, я его уж и перекрутил. Добавил «Execute», ввиду отсутствия главного свойства в методе Find... Иначе, зачем применять «Find»?)
Да, и цикл перебора и выделения, что бы, видеть, все слова которые этот метод нашёл...



Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
если так сделать, взлетает?
В общем, не-а, нифига он не помогает (попробовал).
Так и как вернуть адрес текста?
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
21.04.2020, 11:47
Schumacher57,
Кикие следующие действия после нахождения?

Добавлено через 4 минуты
Как вариант ищем текст "AA" только во всех таблицах документа ворд и
Цитата Сообщение от Schumacher57 Посмотреть сообщение
Так и как вернуть адрес текста?
Visual Basic
1
2
3
4
5
6
7
Sub MMM()
For i = 1 To Word.ActiveDocument.Tables.Count
   For Each C In ActiveDocument.Tables(i).Range.Cells
   If C.Range.Text Like "*AA*" Then MsgBox ("Table #:" & i & Chr(13) & "Row:" & C.RowIndex & Chr(13) & "Column:" & C.ColumnIndex)
   Next
Next
End Sub
1
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 301
21.04.2020, 13:45
Narimanych,
Цитата Сообщение от Narimanych Посмотреть сообщение
Кикие следующие действия после нахождения?
Да там, задача простая. В определённой таблице (именно в таблице №7) найти текст в строке, (например: «Отчёт №3», а их например всего пять), и удалить все строки (со столбцами) идущие до этого текста (в таблице).
Т.е. скажем так: укоротить таблицу, обрезая её с начала. А флагом остановки, служит искомый текст. Это, то я реализую. Хотя если будет, хороший пример (как выше), буду благодарен.

Цитата Сообщение от Narimanych Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
Sub MMM()
For i = 1 To Word.ActiveDocument.Tables.Count
   For Each C In ActiveDocument.Tables(i).Range.Cells
   If C.Range.Text Like "*AA*" Then MsgBox ("Table #:" & i & Chr(13) & "Row:" & C.RowIndex & Chr(13) & "Column:" & C.ColumnIndex)
   Next
Next
End Sub
Блин, спасибо! Красивая реализация!
Вот совсем запамятовал про Метод «Like»
И с
Visual Basic
1
For Each C In ActiveDocument.Tables(i).Range.Cells
тоже круто Нуб я в Word...

Не по теме:

Думаю: Т.к. мне искать только в одной таблице, всё ок.
А вот если перебирать каждую ячейку, например в 10 таблицах, то конечно, возможно, метод «Like» не так быстро справится как метод «Find». (не стану писать, что подвиснет, но ... есть немного похожий код с выравниванием, вот там тоже все ячейки перебираются, ворд, как-то с этим грустно, справляется).



Добавлено через 24 минуты
Narimanych,
Цитата Сообщение от Narimanych Посмотреть сообщение
Кикие следующие действия после нахождения?
На самом деле, ещё один нюанс. Надо будет, потом, после строки (заголовка - «Отчёт №6», она без столбцов) найти максимальное число в последних 4 столбцах (всего столбцов 8).
Хотя опять же, уверен с этим справлюсь.

Не по теме:

Цитата Сообщение от Schumacher57 Посмотреть сообщение
А вот если перебирать каждую ячейку, например в 10 таблицах, то конечно, возможно, метод «Like» не так быстро справится как метод «Find»
Зря. Всё чётко, и быстро отработал. Проверил, сейчас.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2020, 13:45
Помогаю со студенческими работами здесь

Поиск нужной таблицы и выделение текста по заданным условиям
подскажите пожалуйста Необходимо написать макрос в котором: 1)найти нужную таблицу (у каждой...

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

Поиск текстовых значений в таблице и их сумма
Только учу данный язык и столкнулся с такой проблемой: Дана таблица с городами и планируемыми...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru