N
Natasha-i
Добрый день. Не так давно столкнулась с такой задачей: имеется документ (на несколько сотен страниц) с большим количеством таблиц. У каждой таблицы различное количество строк и четыре столбца. Необходимо перевести все эти таблицы в Excel для проведения расчетов. Но сделать это напрямую не получается: числа в последнем столбце (стоимость в рублях) отформатированы следующим образом: xx xxx.xx (4-5 значные), поэтому для перевода в Excel и дальнейших расчетов необходимо убрать пробел и заменить точку на запятую. Попыталась записать макрос, получилось что-то наподобие:
В общем, смысл ясен - сделать автоматизацию для всего документа таким образом не получится.
Попробовала написать код вручную. В макросами имею дело нечасто, поэтому столкнулась с проблемой.
Вот код макроса:
В код нужно еще добавить удаление пробелов и проход по всему документу.А проблема заключается в том, что oCell.Range.Text имеет тип String, а оператор With .. End With не работает с этим типом. Каким образом можно по-другому заменить текст в ячейке, не знаю, поиск в Google тоже не дал корректного ответа. Прошу помочь с этой проблемой.
Код:
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