Новости:

Из правил форума: Тема должна отражать суть вопроса, топики типа "help please" будут удаляться!

Главное меню

Замена значений в Word из таблицы

Автор alexstrel, 05.08.2012, 19:09

« назад - далее »

alexstrel

В Word есть таблица состоящая из двух колонок, количество строк может быть различным. В левой колонке идет значение которое встречается в тексте, например "_Значение 1_", "_Значение 2_" и т.д. В правой колоке идет текст на который нужно заменить значения из левой колонки, например "Альфа", "Бета" и т.д.
Т.е. таблица выглядит так
_Значение 1_   Альфа
_Значение 2_   Бета

Задача состоит в том, чтобы заменить по тексту значения из первой колонки на текст из второй колонки. Если делать это вручную то можно сделать черех замену посдставляя значения из левой колонки в "Найти", а из правой в "Заменить на". Но хотелось бы автоматизировать этот процесс через макрос. Может кто-нибудь сталкивался с таким и знает как это сделать?

Шпец Докапыч

Как-то так:
Sub ШД_ЗаменаПоТаблице()
   If ActiveDocument.Tables.Count > 1 Then MsgBox "Ts>1": Exit Sub
   Set tbl = ActiveDocument.Tables(1)
   Application.DisplayAlerts = 0
   For i = 1 To tbl.Rows.Count
     txtF = Replace(tbl.Cell(i, 1), Chr(13) & Chr(7), "")
     txtR = Replace(tbl.Cell(i, 2), Chr(13) & Chr(7), "")
     If Len(txtF) > 0 And Len(txtR) > 0 Then
       With Selection.Find
         .Text = txtF
         .ClearFormatting
         .Replacement.Text = txtR
         .Replacement.ClearFormatting
         .Execute Replace:=2
       End With
     Else: MsgBox "Пустая строка таблицы", 16
     End If
   Next
   Application.DisplayAlerts = -1
End Sub


Обрабатываемый текст нужно выделить, после чего выполнить макрос.
Если на Tables(1) встрянет, то пробуем Tables(2), Tables(3)... Топорно, но для чистого образца годится.
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

alexstrel

Большое спасибо!!!

А как можно сделать чтобы если строка, не в таблице, а просто в тексте, которая полностью состоит например из текста _удаление_, удалялась?

alexstrel

Или даже более универсально сделать. Как можно удалить весь текст между _удаление начало_ и _удаление конец_, включая сам этот текст означающий начало и конец удаления текста.