ᐉ WORK ★
August 7, 2020

Обезличивание отчетов

Обезличивание отчетов

Для быстрого обезличивания отчетов или иных массивов данных для стирания, замены, и/или удаления определенных данных, можно использовать макрос – как встроенных, для средств MS Office, так и написанных специально для нужд компании.

Подробности – ниже.

Задача: Заменить число на Х

Для этого можно воспользоваться диалоговым окном Найти и заменить («Ctrl+H») либо написав специальный макрос. Если хотите сделать это с помощью окна Найти и заменить, то откройте это окно («Ctrl+H») и предварительно очистите все поля, уберите все флажки с опций:

Далее, введите в поле Найти такое выражение:

^#

В поле Заменить введите:

Х

и нажмите (если нужно) сочетание клавиш (в поле Заменить):

«Ctrl+B» | «Ctrl+U» | «Ctrl+I»

Полужирный | Подчеркнутый | Курсив

и нажмите кнопку Заменить все.

Цифры в тексте будут оформлены в соответствии с настройками.

Результат:

Все числа – обезличены:

UPD. К примеру, если будет необходимо удалить не все числа в документе, а выборочный диапазон, или тип данных (например, только тыс.руб. – обезличить 6-тизначные числа: ХХХ ХХХ,ХХ руб., и т.п.), можно настроить подобный массив под выборку:

Задача: обезличить табл. на предмет наличия млн. и млрд.

Вводим маску поиска:

Проверяем правильность введенных данных, нажимаем Найти Далее (Find next):

Нажимаем Заменить. Итог:

И так далее, по вашему запросу.

Далее, если необходимо заменить текст определенного образца,

Задача: удалить текст из заданного диапазона во всем документе

Функция работает после написания макроса.

Макрос расположен в Visual Basic, чтобы отрыть Visual Basic нужно нажать Alt+F11, ищите в списке файл в котором работаете, дальше через добавления модуля нужно ввести текст (команды) макроса. (просто копируете и вставляете). Сохраняете. И дальше в строке икселя появляется новая функция Visual Basic.

Копируете данный текст в открывшееся окно, редактируете запрос и запускаете макрос:




Sub УдалениеТекста()

Dim rng As Range

Dim bm As Bookmarks

Set bm = ActiveDocument.Bookmarks

Application.ScreenUpdating = False

Selection.Find.ClearFormatting

Selection.Find.Replacement.ClearFormatting

With Selection.Find

.Text = "Срок участия"

.Forward = True

.Execute

Selection.MoveLeft Unit:=wdCharacter, Count:=1

Do While .Found = True

.Text = "Срок участия"

.Forward = True

.Wrap = wdFindContinue

.Execute

If Selection.Find.Found = False Then

Application.ScreenUpdating = True

MsgBox ("Готово!")

Exit Sub

End If

Selection.MoveRight Unit:=wdCharacter, Count:=1

With Selection.Find

.Text = "("

.Forward = False

.Execute

End With

bm.Add ("bm1")

Selection.MoveRight Unit:=wdCharacter, Count:=1

With Selection.Find

.Text = ")"

.Forward = True

.Execute

End With

.Text = "Срок участия"

bm.Add ("bm2")

Selection.MoveRight Unit:=wdCharacter, Count:=1

Set rng = ActiveDocument.Range(Start:=bm("bm1").Start, End:=bm("bm2").End)

rng.Select

Selection.Delete

Loop

End With

End Sub




Данный макрос (приведен выше) ищет слово по поиску в документе:

.Text = "Срок участия"

Далее после нахождения совпадения задает рамки удаления ОТ определенного заданного символа и ДО определенного заданного символа от получившегося совпадения

.Text = "("
.Text = ")"

Итог: в документе будет удалены все совпадения любой длины, коррелирующие с сочетанием:

 (Срок участия……)

Выделив подлежащий удалению элемент текста в документе, вы можете настроить необходимое поведение макроса на удаление заданных значений (необходимые поля подсвечены выше)