1

Тема: Автоматический обрыв объектов слияния

Дано: создан документ с большим количеством связей через слияние с ExcelНадо: оборвать только связи слияния в документе Решение:1) нажал alt+F9, для перехода в режим кодов полей;2) запустил функцию найти и ввёл ^d^wMERGEFIELD, тем самым выделив все объекты слияния3) нажал alt+F9, вернулся в обычный режим, все нужные элементы выделеныПРОБЛЕМА - как их преобразовать в обычный текст?  Shift+Ctrl+F9 обрывает только первую связь в документеP.s. функция в закладке рассылки-найти и объединить-изменить отдельные документы - решает вопрос с удалением слияния, но при этом все остальные ссылки (перекрёстные) сводит с ума

2

Re: Автоматический обрыв объектов слияния

Решение через выделение всего текста и Shift+Ctrl+F9  - не подходит, перекрёстные ссылки сохранится должны

3

Re: Автоматический обрыв объектов слияния

xsardas пишет:

Дано: создан документ с большим количеством связей

Прикрепите свой документ или пример с такими полями. На данный момент могу предложить перебор полей и если в их имени есть

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

4

Re: Автоматический обрыв объектов слияния

Eсли в их имени есть "^d^wMERGEFIELD" - делать unlink

Sub FieldsToText()
  Dim oFld As Field
  For Each oFld In ActiveDocument.Fields
    oFld.Unlink
  Next oFld
End Sub
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

5

Re: Автоматический обрыв объектов слияния

Fck_This
Обрезанная часть файла слияния
макрос убивает все связи (т.е. и перекрёстные ссылки) - т.е. работает как аналог ctrl+A
а потом Shift+Ctrl+F9

6

Re: Автоматический обрыв объектов слияния

сам файл прикрепил

Post's attachments

слияние.rar 599.47 Кб, 2 скачиваний с 2017-04-12 

You don't have the permssions to download the attachments of this post.

7

Re: Автоматический обрыв объектов слияния

xsardas пишет:

Fck_This
Обрезанная часть файла слияния
макрос убивает все связи (т.е. и перекрёстные ссылки) - т.е. работает как аналог ctrl+A
а потом Shift+Ctrl+F9

Потому что это стартовая версия макроса big_smile Пример.
Насколько я понял по поиску, то поля с "^d^wMergefield" это поля с именами:
MERGEFIELD   Кл_отв
MERGEFIELD   кк  \# «0.00»
MERGEFIELD срок

Чтобы их убрать воспользуйтесь этим кодом:

Sub UnlinkForFields()
  Dim oFld As Field
  Dim sCode As String
  For Each oFld In ActiveDocument.Fields
    sCode = oFld.Code
    oFld.Select
    If InStr(sCode, "MERGEFIELD срок") >= 1 Then MsgBox sCode: oFld.Unlink
    If InStr(sCode, "Кл_отв") >= 1 Then MsgBox sCode: oFld.Unlink
    If InStr(sCode, "кк  \# «0.00»") >= 1 Then MsgBox sCode: oFld.Unlink
  Next oFld
End Sub
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

8

Re: Автоматический обрыв объектов слияния

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

9

Re: Автоматический обрыв объектов слияния

А можно сделать так, чтоб на каждом шагу не было необходимости нажимать ОК?

10

Re: Автоматический обрыв объектов слияния

xsardas пишет:

А можно сделать так, чтоб на каждом шагу не было необходимости нажимать ОК?

)) Прошу прощения, это для отладки было нужно
Удалите строки "MsgBox sCode: "

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

11

Re: Автоматический обрыв объектов слияния

Можно даже выделеніе убрать. Вот так оставіть.

Sub UnlinkForFields()
  Dim oFld As Field
  Dim sCode As String
  For Each oFld In ActiveDocument.Fields
    sCode = oFld.Code
    If InStr(sCode, "MERGEFIELD срок") >= 1 Then oFld.Unlink
    If InStr(sCode, "Кл_отв") >= 1 Then oFld.Unlink
    If InStr(sCode, "кк  \# «0.00»") >= 1 Then oFld.Unlink
  Next oFld
End Sub
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871