1

Тема: преобразование сносок в текст

Добрый день.
Помогите, пожалуйста, решить следующую задачу в Ворд 2007.
Имеется набор иностранных слов, возле каждого из которых стоит сноска и в ней перевод слова. Задача: преобразовать текст сноски в обычный текст, и текст каждой сноски поместить рядом со словом, возле которого стоит сноска:
Пример:
s’oblitère (сноска № 1)
se dérobe (сноска № 2)

--------------------
Сноска № 1 стираться, сглаживаться; изглаживаться
Сноска № 2  отстраняться; отодвигаться; высвобождаться

Хотелось бы прийти к следующему результату:
s’oblitère - стираться, сглаживаться; изглаживаться
se dérobe - отстраняться; отодвигаться; высвобождаться.

Возможно ли это? Заранее благодарю.

2

Re: преобразование сносок в текст

civil, посмотртите вот это решение: Преобразование сносок в обычный текст

3

Re: преобразование сносок в текст

Супер. То, что надо! Готов проставиться.

Отредактировано civil (03.01.2010 20:41:52)

4

Re: преобразование сносок в текст

а как сделать то же со входами указателя? то есть тексты входа повставлять в текст допустим в угловых скобках

5

Re: преобразование сносок в текст

Т.е., если вход указателя выглядит так:
аэроплан{ XE "аэроплан"}, то вы хотите получить:
<аэроплан>{ XE "аэроплан"}

Лучше день потерять — потом за пять минут долететь!

6

Re: преобразование сносок в текст

Скорее так:
аэроплан<аэроплан>{ XE "аэроплан"}
то есть и текст оставить и рядом поместить содержимое входа указателя (оно ведь не всегда совпадает с собственно текстом, может быть как минимум в другом падеже, с прописной и пр.

7

Re: преобразование сносок в текст

Вот так:

Sub PutInCornerBrackets()
  Dim oFld As Field 'Переменная для перебора полей в документе
  'Переменные для запоминания начала и конца выражения в кавычках внутри поля
  Dim FirstQuotePos As Integer, SecondQuotePos As Integer
  Dim FldStart As Long 'Начало поля
  
  'Перебираем все поля в документе
  For Each oFld In ActiveDocument.Fields
    If oFld.Type = wdFieldIndexEntry Then 'Если поле является полем элемента таблицы индексов
      FldStart = oFld.Code.Start 'Запоминаем положение поля
      FirstQuotePos = InStr(oFld.Code.Text, """") + 1 'Вычисляем положение первой кавычки внутри этого поля
      SecondQuotePos = InStrRev(oFld.Code.Text, """") 'Вычисляем положение второй кавычки внутри этого поля
      'Перед полем вставляем первое слово, обрамлённое угловыми скобками
      ActiveDocument.Range(FldStart - 1, FldStart - 1).InsertAfter "<" & Mid(oFld.Code.Text, FirstQuotePos, SecondQuotePos - FirstQuotePos) & ">"
    End If
  Next
End Sub
Лучше день потерять — потом за пять минут долететь!

8

Re: преобразование сносок в текст

Хм... здорово... вроде работает... осталось разобраться с основным и дополнительным полем... и отличиями прямой ссылки и перекрестной... Спасибо большое, будем думать smile

9

Re: преобразование сносок в текст

А что там разбираться? Основное поле идёт до двоеточия, дополнительные поля после. Ну и ключи проанализировать. 10 минут.

Лучше день потерять — потом за пять минут долететь!

10

Re: преобразование сносок в текст

ну я просто вообще чайник в этих функциях. Вы бы могли прокомментировать строки этого макроса?
А вообще мне надо вот пробежаться по словам с указателем и вытащить входы, из указателя второго уровня сделать вида:
<начало>уголь<конец, "Порох", "Древесный уголь">
для дальнейшей обработки в программах верстки... Спасибо еще раз за помощь...

11

Re: преобразование сносок в текст

Код прокомментировал. Могу взяться за полное доведение макроса до требуемого результата за вознаграждение. Подробности по почте.

Лучше день потерять — потом за пять минут долететь!