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

  • Автор темы Natasha-i
  • Дата начала
N

Natasha-i

#1
Добрый день. Не так давно столкнулась с такой задачей: имеется документ (на несколько сотен страниц) с большим количеством таблиц. У каждой таблицы различное количество строк и четыре столбца. Необходимо перевести все эти таблицы в Excel для проведения расчетов. Но сделать это напрямую не получается: числа в последнем столбце (стоимость в рублях) отформатированы следующим образом: xx xxx.xx (4-5 значные), поэтому для перевода в Excel и дальнейших расчетов необходимо убрать пробел и заменить точку на запятую. Попыталась записать макрос, получилось что-то наподобие:
Код:
	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 = ","
В общем, смысл ясен - сделать автоматизацию для всего документа таким образом не получится.
Попробовала написать код вручную. В макросами имею дело нечасто, поэтому столкнулась с проблемой.
Вот код макроса:

Код:
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 тоже не дал корректного ответа. Прошу помочь с этой проблемой.
 

alex77755

Well-known member
15.02.2009
128
0
#2
Попробуй не преобразовывать в таблице, а считать в массив как есть. А подтом в массиве преобраззовать и выгрузить в ексел
Хотя не вижу смысла выгрузки в ексел: можно сделать расчёты и без ексела! В памяти
 
N

Natasha-i

#3
А, наверное, неясно выразилась. Дело не в расчетах, а в экспортировании - таблицы потом экспортируются из Excel в стороннее приложение, используя плагин, поэтому без этого тут не обойтись. Спасибо за совет, смысл понятен, попробую завтра реализовать, как получится, отпишу сюда.