1

Тема: Автозамена текста во всех строках столбца таблицы.

Есть вот такая таблица.

Каким образом можно добавить к в начале и конце текста во втором столбце кавычки и точку после них одновременно во всех строках этого столбца. Или же добавлять один и тот же текст в эти ячейки столбца?

Кавычки и точка проставлены до 33 строки при помощи такого макроса:
http://wordexpert.ru/page/obramlyaem-vy … mment-6126
но для этого нужно выделять каждый раз текст вручную.

Можно ли как-то автоматизировать работу?

Post's attachments

Список.doc 612 Кб, 1 скачиваний с 2013-03-01 

You don't have the permssions to download the attachments of this post.

2

Re: Автозамена текста во всех строках столбца таблицы.

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

3

Re: Автозамена текста во всех строках столбца таблицы.

Ребят, данный запрос трудно реализуется на практике или же просто нет желания помочь?

4

Re: Автозамена текста во всех строках столбца таблицы.

fit пишет:

Ребят, данный запрос трудно реализуется на практике или же просто нет желания помочь?

Трудно реализуется поиск ячеек второго столбца таблицы. Мне самому было бы интересно увидеть такое решение.
Подобные вопросы, связанные с обращением к конкретным ячейкам таблицы в Word'e уже неоднократно задавали - ответа на них пока не было.
Попробуйте использовать приемы, приведенные в этом решении: http://wordexpert.ru/page/rascvechivani … -v-tablice.
Правда, там делается обход таблицы по строкам, а вам нужно выполнить обход по столбцам (по второму столбцу). То есть вместо объекта Row используйте объект Column.

Еще взгляните следующий материал: внешняя ссылка. Основные положения, описанные здесь применимы и для более поздних версий Word.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Автозамена текста во всех строках столбца таблицы.

Вот макрос, который обходит ячейки второго столбца текущей таблицы:

Sub CellsIn2Column()
'Обход второго столбца
Dim rngTable As Range
Dim oTable As Table
Dim oCell As Cell
Dim sStr As String
Set rngTable = Selection.Range
Set oTable = Selection.Tables(1)
If Not rngTable.Information(wdWithInTable) Then
MsgBox prompt:="Курсор находится вне таблицы"
Else
   With oTable
      For Each oCell In oTable.Columns(2).Cells

         'Сюда можно вставить текст обработки ячеек второго столбца

      Next oCell
   End With
End If
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

6

Re: Автозамена текста во всех строках столбца таблицы.

Спасибо за ответ!

К сожалению, я отдаленно понимаю ВБА.

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

Предположим, что у меня всего один столбец и много позиций в нем.
Можно ли объединить два макроса (написанный Вами для обхода ячеек столбца) и этот http://wordexpert.ru/page/obramlyaem-vy … mment-6126 для проставления "заданных символов" в начале и конце текста в ячейке?

7

Re: Автозамена текста во всех строках столбца таблицы.

Вот объединенный макрос (пока для второго столбца):

Sub CellsInColumn()
'Обход второго столбца
Dim rngTable As Range
Dim oTable As Table
Dim oColumn As Column
Dim oCell As Cell
Dim sStr As String
Set rngTable = Selection.Range
Set oTable = Selection.Tables(1)
If Not rngTable.Information(wdWithInTable) Then
MsgBox prompt:="Курсор находится вне таблицы"
Else
   With oTable
      For Each oCell In oTable.Columns(2).Cells
         oCell.Select
         
         If Right(Selection.Text, 1) = Chr(32) Or _
        Right(Selection.Text, 1) = Chr(13) Then
        Selection.MoveLeft wdCharacter, 1, wdExtend
        End If
        With Selection
        .InsertBefore Chr(171)
        .InsertAfter Chr(187) + "."
        End With
      
      Next oCell
   End With
End If
End Sub

Как это преобразование сделать для текущего столбца, я пока не знаю. Буду искать...

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

8

Re: Автозамена текста во всех строках столбца таблицы.

Вот теперь все работает. Преобразует текущий столбец таблицы (в котором стоит курсор).

Sub CellsInColumn()
'Обход второго столбца
Dim rngTable As Range
Dim oTable As Table
Dim oColumn As Column
Dim oCell As Cell
Dim sStr As String
Dim c As Integer
Set rngTable = Selection.Range
Set oTable = Selection.Tables(1)
If Not rngTable.Information(wdWithInTable) Then
MsgBox prompt:="Курсор находится вне таблицы"
Else
   With oTable
    'Определение номера колонки (c)
    rngTable.Expand Unit:=wdCell
    c = rngTable.Cells.Item(1).ColumnIndex
    
    For Each oCell In oTable.Columns(c).Cells
         oCell.Select
         
         If Right(Selection.Text, 1) = Chr(32) Or _
        Right(Selection.Text, 1) = Chr(13) Then
        Selection.MoveLeft wdCharacter, 1, wdExtend
        End If
        With Selection
        .InsertBefore Chr(171)
        .InsertAfter Chr(187) + "."
        End With
      
    Next oCell
   End With
End If
End Sub

Может быть не оптимально, но...
Было бы интересно увидеть более простое решение. smile

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

9

Re: Автозамена текста во всех строках столбца таблицы.

Спасибо! Это то что нужно! Потрясающе!

Как я могу Вас отблагодарить?