• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

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

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

Natasha-i

Добрый день. Не так давно столкнулась с такой задачей: имеется документ (на несколько сотен страниц) с большим количеством таблиц. У каждой таблицы различное количество строк и четыре столбца. Необходимо перевести все эти таблицы в 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 тоже не дал корректного ответа. Прошу помочь с этой проблемой.
 
Попробуй не преобразовывать в таблице, а считать в массив как есть. А подтом в массиве преобраззовать и выгрузить в ексел
Хотя не вижу смысла выгрузки в ексел: можно сделать расчёты и без ексела! В памяти
 
А, наверное, неясно выразилась. Дело не в расчетах, а в экспортировании - таблицы потом экспортируются из Excel в стороннее приложение, используя плагин, поэтому без этого тут не обойтись. Спасибо за совет, смысл понятен, попробую завтра реализовать, как получится, отпишу сюда.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD