1

Тема: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Добрый день.
Мне нужен Макрос, который последовательно пробежит по всем закладкам в тексте и преобразует их в текст.
Важно, чтобы сохранился тот текст, который в эти закладки будет загружен и второе - не трогать перекрёстные ссылки.

Предложенное на форуме решение Ctrl+A >> Ctrl+Shift+F9 не годится, т.к. оно не различает закладки и перекрёстные ссылки, убивая всё.

2

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Xixiksa пишет:

Добрый день.
Мне нужен Макрос, который последовательно пробежит по всем закладкам в тексте и преобразует их в текст.
Важно, чтобы сохранился тот текст, который в эти закладки будет загружен и второе - не трогать перекрёстные ссылки.

Предложенное на форуме решение Ctrl+A >> Ctrl+Shift+F9 не годится, т.к. оно не различает закладки и перекрёстные ссылки, убивая всё.

Присылайте на почту пример документа 140315926@rambler.ru

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

3

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Xixiksa пишет:

Добрый день.
Мне нужен Макрос, который последовательно пробежит по всем закладкам в тексте и преобразует их в текст.
Важно, чтобы сохранился тот текст, который в эти закладки будет загружен и второе - не трогать перекрёстные ссылки.

Предложенное на форуме решение Ctrl+A >> Ctrl+Shift+F9 не годится, т.к. оно не различает закладки и перекрёстные ссылки, убивая всё.

Не понятны требования. Что вы имеете в виду под

4

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Xixiksa пишет:

Добрый день.
Мне нужен Макрос, который последовательно пробежит по всем закладкам в тексте и преобразует их в текст.
Важно, чтобы сохранился тот текст, который в эти закладки будет загружен и второе - не трогать перекрёстные ссылки.

Предложенное на форуме решение Ctrl+A >> Ctrl+Shift+F9 не годится, т.к. оно не различает закладки и перекрёстные ссылки, убивая всё.

Не понятно, что вы имеете в виду под "закладкой". Выложите документ и прокомментируйте, что нужно удалять. Сами закладки (Bookmarks) собственного текста не имеют, а лишь ограничивают некоторый непрерывный текст в документе и имеют свое уникальное имя.
Вот пример удаления закладок в документе (макрос DeleteBookmarksInDoc):

Sub DeleteBoolmarksInRange(ByRef rg As Range)
Dim abmk As Bookmark
For Each abmk In rg.Bookmarks
    On Error Resume Next
    abmk.Delete
    On Error GoTo 0
Next
End Sub

Sub DeleteBookmarksInDoc()
DeleteBoolmarksInRange ActiveDocument.Range
End Sub

5

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

yshindin пишет:
Xixiksa пишет:

Добрый день.
Мне нужен Макрос, который последовательно пробежит по всем закладкам в тексте и преобразует их в текст.
Важно, чтобы сохранился тот текст, который в эти закладки будет загружен и второе - не трогать перекрёстные ссылки.

Предложенное на форуме решение Ctrl+A >> Ctrl+Shift+F9 не годится, т.к. оно не различает закладки и перекрёстные ссылки, убивая всё.

Не понятно, что вы имеете в виду под "закладкой". Выложите документ и прокомментируйте, что нужно удалять. Сами закладки (Bookmarks) собственного текста не имеют, а лишь ограничивают некоторый непрерывный текст в документе и имеют свое уникальное имя.
Вот пример удаления закладок в документе (макрос DeleteBookmarksInDoc):

Sub DeleteBoolmarksInRange(ByRef rg As Range)
Dim abmk As Bookmark
For Each abmk In rg.Bookmarks
    On Error Resume Next
    abmk.Delete
    On Error GoTo 0
Next
End Sub

Sub DeleteBookmarksInDoc()
DeleteBoolmarksInRange ActiveDocument.Range
End Sub

Спасибо за Ваш ответ, но он как я и писала ранее по результату равен действиям: Ctrl+A >> Ctrl+Shift+F9. т.е. все перекрёстные ссылки тоже превращаются в текст.
Если зайти на вкладку Вставка, подпункт Ссылки то там есть три Вида автоматизированных полей: Гиперссылка, Закладки, Перекрёстные ссылки.
Мне нужен макрос, который последовательно пройдет по каждой Закладке, превратит каждую в текст. (Закладка, выбрать первую в списке, Перейти, Ctrl+Shift+F9, Закладка, Выбрать первую в списке, Удалить //повторить столько раз, пока полностью не очистится список закладок//).

6

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Xixiksa пишет:

Добрый день.
Мне нужен Макрос, который последовательно пробежит по всем закладкам в тексте и преобразует их в текст.
Важно, чтобы сохранился тот текст, который в эти закладки будет загружен и второе - не трогать перекрёстные ссылки.

Предложенное на форуме решение Ctrl+A >> Ctrl+Shift+F9 не годится, т.к. оно не различает закладки и перекрёстные ссылки, убивая всё.

Sub Поля()
Dim oField As Field
Dim sPerem As String
For Each oField In ActiveDocument.Fields
sPerem = oField.Result.Text
scode = oField.Code
If Not InStr(scode, "HYPERLINK") >= 1 Then Selection.Range.Text = sPerem
Next oField
End Sub

Вот ваш код

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

7

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Если поля с номерами подразделов тоже надо оставить, то используйте строку

If Not InStr(scode, "HYPERLINK") >= 1 And Not InStr(scode, "REF") >= 1 Then Selection.Range.Text = sPerem

а не

If Not InStr(scode, "HYPERLINK") >= 1 Then Selection.Range.Text = sPerem
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

8

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Fck_This пишет:

Если поля с номерами подразделов тоже надо оставить, то используйте строку

If Not InStr(scode, "HYPERLINK") >= 1 And Not InStr(scode, "REF") >= 1 Then Selection.Range.Text = sPerem

а не

If Not InStr(scode, "HYPERLINK") >= 1 Then Selection.Range.Text = sPerem

Не сразу понял, что "закладками" Xixiksa называет поля Word (Fields).
По поводу предложенного Fck_this решения: вместо

. . .  Then Selection.Range.Text = sPerem

я бы указал

. . . Then oField.Unlink

такой код не только разрывает поле с источником, но и сохраняет форматирование бывшего источника, а вариант Then Selection.Range.Text = sPerem форматирования не сохраняет.
Например, вы сделали закладку (bookmark) на текст, содержавший выделенные жирным шрифтом, курсивом и т.п. слова. А затем сделали гиперссылку (hyperlink) на эту закладку. Если теперь к полю гиперссылки применить метод Unlink, то гиперссылка отцепится, но текст со всем форматированием сохранится.

9

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

yshindin пишет:

Поправка.
. . .
Например, вы сделали закладку (bookmark) на текст, содержавший выделенные жирным шрифтом, курсивом и т.п. слова. А затем сделали кросс-ссылку (cross-reference) на эту закладку. Если теперь к полю кросс-ссылки применить метод Unlink, то гиперссылка отцепится, но текст со всем форматированием сохранится.
. . .

10

Re: Макрос преобрузующий автоматизированные поля (Закладки) в текст

Итоговый код, который идеально всё сделал:

Sub FieldsDelete()
For Each Field In ActiveDocument.Fields
scode = Field.Code
If Not InStr(scode, "HYPERLINK") >= 1 And Not InStr(scode, "REF") >= 1 Then Field.Unlink
Next Field
End Sub

Выражаю огромную благодарность Fck_This и yshindin за помощь. Теперь всё работает так как надо. Гиперссылки и перекрёстные ссылки остались дееспособными, и документ можно запускать по процессу многоуровневого согласования, не боясь, что данные, заполненные автоматически из сторонней системы, будут утеряны.