Замена Текста В Таблице Ms Word

Тема в разделе "Visual Basic", создана пользователем Natasha-i, 1 фев 2013.

  1. Natasha-i

    Natasha-i New Member

    Репутация:
    0
    Регистрация:
    1 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    Добрый день. Не так давно столкнулась с такой задачей: имеется документ (на несколько сотен страниц) с большим количеством таблиц. У каждой таблицы различное количество строк и четыре столбца. Необходимо перевести все эти таблицы в Excel для проведения расчетов. Но сделать это напрямую не получается: числа в последнем столбце (стоимость в рублях) отформатированы следующим образом: xx xxx.xx (4-5 значные), поэтому для перевода в Excel и дальнейших расчетов необходимо убрать пробел и заменить точку на запятую. Попыталась записать макрос, получилось что-то наподобие:
    Код (LotusScript):
        Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=4
    Selection.MoveDown Unit:=wdLine, Count:=100, Extend:=wdExtend
    Selection.MoveUp Unit:=wdLine, Count:=7, Extend:=wdExtend
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
    .Text = "."
    .Replacement.Text = ","
    В общем, смысл ясен - сделать автоматизацию для всего документа таким образом не получится.
    Попробовала написать код вручную. В макросами имею дело нечасто, поэтому столкнулась с проблемой.
    Вот код макроса:

    Код (LotusScript):
             
    Sub Replace_Table()
    2 Dim oTbl As Table
    3 Dim oCell As Cell
    4 Dim c As Integer
    5
    6     Set oTbl = Selection.Tables(1)
    7     Set oCell = oTbl.Range.Cells(1)
    8     c = oTbl.Columns.Count
    9
    10
    11   Do
    12
    13      If oCell.ColumnIndex = c Then
    14
    15          With oCell.Range.Text
    16           .Text = "."
    17           .Replacement.Text = ","
    18          End With
    19      Selection.Find.Execute Replace:=wdReplaceAll
    20      End If
    21      Set oCell = oCell.Next
    22      DoEvents
    23   Loop Until oCell Is Nothing
    24  End Sub
    В код нужно еще добавить удаление пробелов и проход по всему документу.А проблема заключается в том, что oCell.Range.Text имеет тип String, а оператор With .. End With не работает с этим типом. Каким образом можно по-другому заменить текст в ячейке, не знаю, поиск в Google тоже не дал корректного ответа. Прошу помочь с этой проблемой.
     
  2. alex77755

    alex77755 Well-Known Member

    Репутация:
    0
    Регистрация:
    15 фев 2009
    Сообщения:
    128
    Симпатии:
    0
    Попробуй не преобразовывать в таблице, а считать в массив как есть. А подтом в массиве преобраззовать и выгрузить в ексел
    Хотя не вижу смысла выгрузки в ексел: можно сделать расчёты и без ексела! В памяти
     
  3. Natasha-i

    Natasha-i New Member

    Репутация:
    0
    Регистрация:
    1 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    А, наверное, неясно выразилась. Дело не в расчетах, а в экспортировании - таблицы потом экспортируются из Excel в стороннее приложение, используя плагин, поэтому без этого тут не обойтись. Спасибо за совет, смысл понятен, попробую завтра реализовать, как получится, отпишу сюда.
     
Загрузка...

Поделиться этой страницей