1

Тема: Макросы.Работа с таблицей в Worde

Ребята,нужна помощь!!!!У меня есть текстовый документ.В нем есть таблица,в которую мне нужно попасть и пройтись по всем столбцам и строчкам.Как мне это сделать?Можете напискать текст программы?

2

Re: Макросы.Работа с таблицей в Worde

и толку от того, что вы пройдетесь по всем ячейкам? Нужно ведь еще какие-то действия сделать с этими ячейками, как я понимаю?

3

Re: Макросы.Работа с таблицей в Worde

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

4

Re: Макросы.Работа с таблицей в Worde

Саша, дело в том, что вы представляете себе решение своей задачи как «пробежаться по строкам и столбцам», а на самом деле оно может быть совершенно иным. Например, можно воспользоваться поиском в таблице.
Ну да ладно, пробежаться можно так:

Sub RunThroughTable()
  Dim i As Long, j As Long 'Счётчики строк и столбцов
  Dim oTbl As Table 'Таблица, в которой будем перебирать ячейки
  
  Set oTbl = ActiveDocument.Tables(1) 'Первая таблица в документе
  For i = 1 To oTbl.Rows.Count 'Перебор всех строк
    For j = 1 To oTbl.Columns.Count 'Перебор всех столбцов
      Debug.Print "Строка " & i & "; Столбец " & j & ". Текст ячейки: " & oTbl.Cell(i, j).Range.Text
    Next j
  Next i
End Sub

Эта процедура «пробежится» по всем ячейкам первой таблицы в активном документе, перебирая строки и столбцы, и выведет номер строки, столбца и содержимое соответствующей ячейки. Вывод производится в Immediate Window, которое вызывается по Ctrl+G. Процедура не будет работать если в таблице есть объединённые ячейки. Если вы хотите «пробежаться» по таблице, в которой находится курсор, тогда замените ActiveDocument на Selection.
Второй способ перебора ячеек. Более быстрый и будет работать вне зависимости от наличия объединённых ячеек

Sub RunThroughTable2()
  Dim oCell As Cell 'Переменная, которой будем перебирать ячейки
  Dim oTbl As Table 'Таблица, в которой будем перебирать ячейки
  
  Set oTbl = ActiveDocument.Tables(1) 'Первая таблица в документе
  Set oCell = oTbl.Range.Cells(1) 'Первая ячейка в таблице
  
  Do Until oCell Is Nothing
    'Вывод информации о ячейке или любые другие действия
    Debug.Print "Строка " & oCell.RowIndex & "; Столбец " & oCell.ColumnIndex & ". Текст ячейки: " & oCell.Range.Text
    Set oCell = oCell.Next 'Переход к следующей ячейке
  Loop
End Sub

Предполагается, что мы имеем дело с обычной таблицей, не имеющей вложенных таблиц.

Тему переношу в раздел «Автоматизация»

Лучше день потерять — потом за пять минут долететь!

5

Re: Макросы.Работа с таблицей в Worde

Спасибо большое smile