Vba word найти таблицу с текстом

12 / 11 / 3

Регистрация: 07.09.2015

Сообщений: 256

21.04.2020, 13:45

7

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



Формулировка задачи:

Добрый день! Есть документы word, в каждом есть определенная табличка 3*3 с какой то информацией! Заполнять ее надо из Excel. Она находится в середине текста. Ее порядковый номер я не знаю, перед ней могут быть еще таблицы. Помогите ее идентифицировать. Решил устроить поиск по уникальному тексту.

Ну нашли, а что нашли и где оно! Не очень понимаю работу ворда и Vba.

Код к задаче: «Макрос поиска таблицы в word»

textual

Листинг программы

Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdTable As Word.Table
 
Set wdApp = GetObject(, "Word.Application")
Set wdDoc = wdApp.ActiveDocument
 
With wdDoc.Content.Find
     .Text = "Сметная стоимость"
     .Execute
     If .Found = True Then
        Set wdTable = .Parent.Tables(1)
        wdTable.Cell(1, 1).Range = "Ячейка <a1>"</a1>
        wdTable.Cell(3, 3).Range = "Ячейка <c3>"</c3>
     End If
End With

Полезно ли:

5   голосов , оценка 3.400 из 5

Похожие ответы

  1. Макрос поиска одного из указанных символов в Word
  2. Макрос поиска и замены дат в документе Word
  3. Word Поиск таблицы в документе
  4. Word: макрос для таблиц. Отформатировать определенный вид таблиц
  5. Макрос в Excel, использующий Word
  6. Создать таблицу в Word и заполнить её данными из массива
  7. Перенос таблицы из Word в Excel
  8. Создание нескольких таблиц в Word
  9. Как объединить ячейки таблицы в Word, обращаясь к ним по свойству Cell (n, m)
  10. Как изменить размер изображения, вставленного в ячейку таблицы MS Word?
  11. Импорт данных из Excel в таблицу колонтитула Word

Sub Поиск_и_вставка()

    Dim tbl As Table

            ‘1. Цикл по всем таблицам в файле в поисках нужной таблицы.
    For Each tbl In ActiveDocument.Tables
        ‘ Если начало таблицы находится на странице 3, то выход из цикла, при этом таблице,
            ‘ которая находится на странице 3, будет присвоено vba-имя «tbl».
        If ActiveDocument.Range(Start:=tbl.Range.Start, End:=tbl.Range.Start). _
                Information(wdActiveEndPageNumber) = 3 Then
            Exit For
        End If
    Next tbl

        ‘2. Проверка, была ли найдена нужная таблица.
    If tbl Is Nothing Then
        MsgBox «На странице 3 нет таблицы.», vbExclamation
        Exit Sub
    End If

        ‘3. Вставка в конец таблицы строки.
    tbl.Rows.Add

    End Sub

Something like this:

Sub ReplaceTables()
    Dim oTable As Table
    Dim oRng As Range
    For Each oTable In ThisDocument.Tables
        If oTable.Rows.Count > 1 And oTable.Columns.Count > 1 Then
            If IsNumeric(oTable.Cell(2, 1).Range.Words(1).Text) And _
                        IsNumeric(oTable.Cell(2, 2).Range.Words(1).Text) Then
                Set oRng = oTable.Range
                oTable.Delete
                oRng.Text = "[TABLE]" & vbCrLf
            End If
        End If
    Next
    Set oTable = Nothing
    Set oRng = Nothing
End Sub

It loops through all the tables in the document, checks in the first two cells in the second row if the first word is numeric, and if so deletes the table and puts the [TABLE] text and a new line instead.

Hope this helps.

Addition:

To check for 4 columns or more, and the presence of a $ sign in the text of the table, use this check instead:

If oTable.Columns.Count >= 4 Then
    If InStrRev(oTable.Range.Text, "$") > 0 Then

Страницы 1

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

1 23.11.2010 20:10:43

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Тема: Поиск в тексте включая таблицы — проблемы и !решение

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

    Dim MyRange, oRange As Range
    Dim MyRangeEnd As Long
    Dim strAcronym As String

    Set MyRange = ActiveDocument.Range
    MyRangeEnd = MyRange.End
    strListSep = Application.International(wdListSeparator)

    Set oRange = MyRange

        With oRange.Find
            .Text = "<[A-ZА-ЯЁ]{2" & strListSep & "}>"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = True
            .MatchWildcards = True
            
            'Perform the search
            Do While .Execute
                'Continue while found
                strAcronym = oRange
                
                ' VERY IMPORTANT line as for some docs Search gets stuck in headers/footers etc.
                If strAcronym = "" Then oRange.Start = oRange.Start + 1
                
                Debug.Print oRange.Start, "Table=" & Selection.Information(wdWithInTable), strAcronym

                '***********************************************************************
                'Манипуляции с найденным
                oRange.Expand Unit:=wdSentence
                Debug.Print strAcronym, oRange 'печать сокр. и предложения где оно найдено

                '***********************************************************************
                
                If oRange.Information(wdWithInTable) = True Then
                    oRange.MoveEnd wdCharacter, -1
                Else
                    oRange.Start = oRange.End
                    oRange.End = MyRangeEnd
                End If

            Loop

раскопал следующее:
внешняя ссылка
If the end of the range includes the cell marker, then the range includes the whole cell regardless of where you set the start value.
А именно — если диапазон включает маркер конца ячейки, то диапазон расширяется на ВСЮ ячейку, независимо от того, какое задано значение Start

Не знаю как это связано, но именно взяв из указанного примера подход oRange.MoveEnd wdCharacter, -1
удалось добится работоспособности кода как в основном тексте, так и в таблицах. Да, еще и колонтитулы проскакивает.

В общем, дополнения исправления и т.д. приветствуются. Так, например я расширяю диапазон на  oRange.Expand Unit:=wdSentence — если кто предложит как по другому получить на этот же диапазон ссылку без расширения oRange было бы лучше, а то там по моему опасению запрятан потенциальный глюк.

З.Ы.
Если соберусь — выложу потом еще код поиска ссылок типа (ХХ-)XXX-XX-XXXX-XXXXXX — госты, осты и др. стандарты… в работе…

Отредактировано VBA-addict (24.11.2010 11:17:54)

Делай, что можешь, и будь, что будет!

2 Ответ от andrkar 23.11.2010 20:44:12

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

Re: Поиск в тексте включая таблицы — проблемы и !решение

По стандартам было бы интересно посмотреть и потестировать.. У самого некоторые задумки тоже есть по этому поводу:)
Мой механизм в макросе по поиску аббревиатур не смотрели? может что полезное для себя найдете??? Лежит в готовых решениях..

Отредактировано andrkar (23.11.2010 20:45:40)

3 Ответ от Вождь 24.11.2010 07:59:30

  • Поиск в тексте включая таблицы - проблемы и !решение
  • Вождь
  • Модератор
  • Неактивен
  • Зарегистрирован: 07.01.2010
  • Сообщений: 745
  • Поблагодарили: 181

Re: Поиск в тексте включая таблицы — проблемы и !решение

Ваш код ищет только первый акроним в предложении. Так и задумано?

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

Попробуйте так:

    Dim strSentence As String

                With oRange.Duplicate
                    .Expand Unit:=wdSentence
                    strSentence = .Text
                End With
                Debug.Print strAcronym, strSentence
                
                oRange.Collapse Direction:=Word.wdCollapseEnd

Макросы под заказ и готовый пакет — mtdmacro.ru

4 Ответ от VBA-addict 24.11.2010 11:46:42

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Re: Поиск в тексте включая таблицы — проблемы и !решение

Вождь пишет:

With oRange.Duplicate
      .Expand Unit:=wdSentence
      strSentence = .Text
End With

Вождь, спасибо!!! То, что доктор прописал smile

Вождь пишет:

oRange.Collapse Direction:=Word.wdCollapseEnd

Это кому как smile Мне не подходит, т.к. моя задумка шире — не приведена здесь smile MyRange — в зависимости от ситуации принимает разные значения — По умолчанию — весь документ, при зажатом Ctrl c текущего места и до конца, при зажатом Shift — только в выделении 

Интересующимся поправленный вариант:

    Dim MyRange, oRange As Range
    Dim MyRangeEnd As Long
    Dim strAcronym As String

    Set MyRange = ActiveDocument.Range
    MyRangeEnd = MyRange.End
    strListSep = Application.International(wdListSeparator)

    Set oRange = MyRange

        With oRange.Find
            .Text = "<[A-ZА-ЯЁ]{2" & strListSep & "}>"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = True
            .MatchWildcards = True
            
            'Perform the search
            Do While .Execute
                'Continue while found
                strAcronym = oRange
                
                ' VERY IMPORTANT line as for some docs Search gets stuck in headers/footers etc.
                If strAcronym = "" Then oRange.Start = oRange.Start + 1
                
                Debug.Print oRange.Start, "Table=" & Selection.Information(wdWithInTable), strAcronym

                '***********************************************************************
                'Манипуляции с найденным
                With oRange.Duplicate
                       .Expand Unit:=wdSentence
                       strSentence = Trim(Replace(.Text, vbCr, ""))
                End With
                Debug.Print strAcronym, strSentence 'печать сокр. и предложения где оно найдено

                '***********************************************************************
                
                If oRange.Information(wdWithInTable) = True Then
                    oRange.MoveEnd wdCharacter, -1
                Else
                    oRange.Start = oRange.End
                    oRange.End = MyRangeEnd
                End If

            Loop

        End With

Делай, что можешь, и будь, что будет!

5 Ответ от Вождь 24.11.2010 13:11:13

  • Поиск в тексте включая таблицы - проблемы и !решение
  • Вождь
  • Модератор
  • Неактивен
  • Зарегистрирован: 07.01.2010
  • Сообщений: 745
  • Поблагодарили: 181

Re: Поиск в тексте включая таблицы — проблемы и !решение

С полным кодом все стало ясно. Во народ скрытный пошел smile

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

Dim R As Range

    Set R = Selection.Range
    R.End = R.StoryLength
    With R.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindStop
        .MatchWildcards = False
        .Text = "^?"
    End With
    R.Find.Execute
    R.Select

Искать надо не в заданной области, а просто вперед проверяя попадание результата в область поиска. Где-то так:

Dim RWork As Range
Dim RFind As Range

    Set RFind = RWork.Duplicate
    With RFind.Find
        '...
        .Wrap = wdFindStop
    End With
    RFind.Collapse wdCollapseStart
    Do While RFind.Find.Execute
        If RFind.End > RWork.End Then Exit Do
        '...
        RFind.Collapse wdCollapseEnd
    Loop

Макросы под заказ и готовый пакет — mtdmacro.ru

6 Ответ от VBA-addict 24.11.2010 13:45:38

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Re: Поиск в тексте включая таблицы — проблемы и !решение

Вождь пишет:

Для ясности, поместите курсор в середине таблицы и запустите код:

Поместил, запустил — заданый код выделяет первый символ первой ячейки текущей строки таблицы — но ясности это мне не добавило smile Запустил в таблице со объединенными ячейками — выделяет самую левую необъединенную ячейку после 1 объединенной. В общем — неясно.

Второй пример кода тоже не вразумил
Понял, что:
1) Поиск осуществляется по дубликату Range RWork
2) Поиск запускается с начала диапазона RWork RFind.Collapse wdCollapseStart ?
3) В цикле проверяется не заскочил ли RFind за RWork.End — если да, то завершается работа
Не понял главное — зачем так?
Duplicate, видимо, чтобы невозможно было что-то поменять, т.к. он Read only — ОК
А вот зачем проверять заскок — если определена работа до конца диапазона… непонятно…

Отредактировано VBA-addict (24.11.2010 13:50:06)

Делай, что можешь, и будь, что будет!

7 Ответ от Вождь 24.11.2010 17:23:45

  • Поиск в тексте включая таблицы - проблемы и !решение
  • Вождь
  • Модератор
  • Неактивен
  • Зарегистрирован: 07.01.2010
  • Сообщений: 745
  • Поблагодарили: 181

Re: Поиск в тексте включая таблицы — проблемы и !решение

Первый мой код наглядно иллюстрирует алгоритм работы Вашего кода. Т.е. зацикливание, когда поиск в заданной области, а начало этой области в таблице.

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

Макросы под заказ и готовый пакет — mtdmacro.ru

8 Ответ от VBA-addict 24.11.2010 18:16:54

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Re: Поиск в тексте включая таблицы — проблемы и !решение

Вождь пишет:

R.Find.Execute
R.Select

На мой скромный взгляд не является полным док-вом зацикливания в табл.

если заменить на:

    For i = 1 To 250
        R.Find.Execute
        R.Select
        Selection.Font.Bold = True
    Next

то видно, что все замечательно идет по/выходит из таблицы

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

Т.о. для заинтересовавшихся

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

Единственное, что на данный момент у меня для такой точности необходимости нет — все таблицы в моем случае шерстятся целиком

Отредактировано VBA-addict (24.11.2010 18:19:22)

Делай, что можешь, и будь, что будет!

9 Ответ от Вождь 24.11.2010 20:45:22

  • Поиск в тексте включая таблицы - проблемы и !решение
  • Вождь
  • Модератор
  • Неактивен
  • Зарегистрирован: 07.01.2010
  • Сообщений: 745
  • Поблагодарили: 181

Re: Поиск в тексте включая таблицы — проблемы и !решение

Ну как же? В моем примере зацикливания, поиск запускается в области от курсора до конца документа, а находит вообще за этой областью. Ведь сами же пробовали:

VBA-addict пишет:

…запустил — заданный код выделяет первый символ первой ячейки текущей строки таблицы…

А должен быть найден первый символ за курсором!

VBA-addict пишет:

…все таблицы в моем случае шерстятся целиком…

Используется другой макрос? Если нет, то зацикливания не избежать. Для полной ясности доработал мой демонстратор циклом и выделением найденного красным:

Dim R As Range

    Set R = Selection.Range
    With R.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindStop
        .MatchWildcards = False
        .Text = "^?"
    End With
    Do While R.End < R.StoryLength - 1
        R.Collapse wdCollapseEnd
        R.End = R.StoryLength
        R.Find.Execute
        If R.Find.Found <> True Then Exit Sub
        R.HighlightColorIndex = wdRed
    Loop

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

Макросы под заказ и готовый пакет — mtdmacro.ru

10 Ответ от VBA-addict 25.11.2010 11:56:29

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Re: Поиск в тексте включая таблицы — проблемы и !решение

Вождь пишет:

Попробуйте, поместив курсор перед таблицей

Попробовал ваш макро — 2 варианта:
1) Начал выделение перед таблицей и закончил в середине ее — циклится в следующей за выделением 1 ячейке таблицы.
2) Просто поставил курсор — циклится в 1 ячейке таблицы

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

Т.о. согласен — нужно контроллировать

Вождь пишет:

    Do While RFind.Find.Execute
        If RFind.End > RWork.End Then Exit Do
        ‘…
        RFind.Collapse wdCollapseEnd
    Loop

единственное переписал короче — по идее должно работать также

Do While RFind.Find.Execute and RFind.End <= RWork.End
    ...
Loop

Остался пока открытым вопрос начала выделения в таблице… и корректной работы с ним поиска… Обдумываю

В общем, таблицы — СОВСЕМ отдельная песня
счас выделил в  таблице 5х3 три средних ячейки… оказалось, что при этом Range возвращает
не выделенные ячейки (2,2),(3,2),(4,2), а (2,2),(2,3),(3,1),(3,2),(3,3),(4,1),(4,2)

Т.о. выделение в таблице нужно обрабатывать СОВСЕМ иначе.

поскольку мне не настолько это все нужно и в моем случае выделение никогда не будет начинаться в таблице — дальнейшую проработку пока делать не буду

окончательный код (с контролем вылета поиска за окончание выделения в таблице)

    Dim MyRange, oRange As Range
    Dim MyRangeEnd As Long
    Dim strAcronym As String

    Set MyRange = ActiveDocument.Range
    MyRangeEnd = MyRange.End
    strListSep = Application.International(wdListSeparator)

    Set oRange = MyRange

        With oRange.Find
            .Text = "<[A-ZА-ЯЁ]{2" & strListSep & "}>"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = True
            .MatchWildcards = True
            
            'Perform the search
            Do While .Execute And oRange.End <= MyRangeEnd
                'Continue while found
                strAcronym = oRange
                
                ' VERY IMPORTANT line as for some docs Search gets stuck in headers/footers etc.
                If strAcronym = "" Then oRange.Start = oRange.Start + 1
                
                Debug.Print oRange.Start, "Table=" & Selection.Information(wdWithInTable), strAcronym

                '***********************************************************************
                'Манипуляции с найденным
                With oRange.Duplicate
                       .Expand Unit:=wdSentence
                       strSentence = Trim(Replace(.Text, vbCr, ""))
                End With
                Debug.Print strAcronym, strSentence 'печать сокр. и предложения где оно найдено

                '***********************************************************************
                
                If oRange.Information(wdWithInTable) = True Then
                    oRange.MoveEnd wdCharacter, -1
                Else
                    oRange.Start = oRange.End
                    oRange.End = MyRangeEnd
                End If

            Loop

        End With

Отредактировано VBA-addict (25.11.2010 12:12:55)

Делай, что можешь, и будь, что будет!

11 Ответ от Вождь 25.11.2010 14:53:09

  • Поиск в тексте включая таблицы - проблемы и !решение
  • Вождь
  • Модератор
  • Неактивен
  • Зарегистрирован: 07.01.2010
  • Сообщений: 745
  • Поблагодарили: 181

Re: Поиск в тексте включая таблицы — проблемы и !решение

Ох, тяжко мне smile Добавление проверок не спасет Ваш макрос. Менять надо принцип.

Похоже, нет понимания различия между поиском в заданной области (Range.Start < Range.End) и поиском когда область схлопнута (Range.Start = Range.End), т.е. во всем документе.

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

По поводу области в таблице. Невозможно работать с областью: стока таблицы + ячейка таблицы. Как только в область попадает несколько строк таблицы, началом области будет начало строки таблицы. Из-за этого все беды с зацикливанием.

Макросы под заказ и готовый пакет — mtdmacro.ru

12 Ответ от VBA-addict 25.11.2010 17:10:10

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Re: Поиск в тексте включая таблицы — проблемы и !решение

Непоняток много — я до этого, в основном имел дело с Excel и Access smile Так что Word со своей моделью для меня животинка новая…

Итак попробуем подвести итоги:

1)

Вождь пишет:

Искать надо не в заданной области, а просто вперед проверяя попадание результата в область поиска.

Т.е. достаточно

Do While RFind.Find.Execute and RFind.End <= RWork.End
    ...
Loop

а все мои проверки в конце не нужны…?
Вместо них достаточно добавить

    RFind.Collapse wdCollapseStart
...
    RFind.Collapse wdCollapseEnd

2) Не понимаю:
2.1 В начале поиска oRange ссылается на некий текст в котором ищутся аббревиатуры
2.2. В момент, когд аббревиатура находится этот же oRange ссылается на найденную фразу
2.3. Не смотря на это после последующего выполнения .Execute oRange перемещается к другому найденному тексту
Непонятно — где же все-таки хранятся:
1) Начало и конец изначального oRange — иначе бы не действовало .Collapse
2) Маркер текущего положения курсора внутри oRange — иначе как бы возобновлялся поиск…

Отредактировано VBA-addict (25.11.2010 17:11:01)

Делай, что можешь, и будь, что будет!

13 Ответ от VBA-addict 25.11.2010 17:45:23

  • VBA-addict
  • майор
  • Неактивен
  • Зарегистрирован: 12.10.2010
  • Сообщений: 66

Re: Поиск в тексте включая таблицы — проблемы и !решение

Нашел еще вариант

После определения MyRange в моем случае

Set myRgOrig = myRange.Duplicate
    ...
Do While .Execute And oRange.InRange(myRgOrig)
    ...
Loop
...

т.е. проверяется вхождение найденного интервала в исходный диапазон, который в Duplicate остается неизменным

Делай, что можешь, и будь, что будет!

Страницы 1

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

Понравилась статья? Поделить с друзьями:
  • Vba word на примерах
  • Vba word курсор в начало документа
  • Vba word копировать документ
  • Vba word копировать весь текст
  • Vba word конец файла