Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2009, 15:52   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию Замена подстрочных знаков

Доброго времени суток.
Довольно не сложная задачка:
Необходимо заменить все подстрочные индексы на знак _ и все выражение взять в $$ . Надстрочные индексы замениться соответственно на ^
Пример:
Si1-xGex (здесь 1-x и x это подстрочные индексы)должен замениться на $Si_{1-x}Ge_{x}$.
1. Подскажите пожалуйста, как представляются знаки
^
_
надстрочные и подстрочные индексы.
2. Как взять все выражение в $$ и {} пока не знаю,но критерием может служить то,что выражение которое нужно выделить $$ отделено от остального текста пробелами, а в {} берется только индекс.
подскажите как можно это реализовать???
mephist вне форума Ответить с цитированием
Старый 14.09.2009, 16:11   #2
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Я хочу применить примерно такую строку
Код:
ActiveDocument.Range.Find.Execute "???",,,,,,,,,"_{???}",wdReplaceAll
ActiveDocument.Range.Find.Execute "???",,,,,,,,,"^{???}",wdReplaceAll
в которой нужно заменить ??? кодами знаков _,^,подстрочных и надстрочных индексов.
А вот как брать в скобки $$ я пока совсем не знаю.
mephist вне форума Ответить с цитированием
Старый 14.09.2009, 17:39   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Надстрочные и подстрочные символы задаются форматирование шрифта (кнопка «Формат» в окне «Найти и заменить»)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 14.09.2009, 18:04   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Примерно такой строкой не получится. Получится немного сложнее. Макрос я сократил от того, что записался автоматом:
Код:
Sub Semiconductors()
  With ActiveDocument.Range.Find
    'Обрамляем долларами
    .Text = "Si1-xGex"
    .Replacement.Text = "$^&$"
    .Execute Replace:=wdReplaceAll
    
    'Ищем выражение 1-x подстрочными символами
    With .Font
      .Superscript = False
      .Subscript = True
    End With
    .Text = "1-x"
    'чтобы обрамить его фигурными скобками и перевести в обычный формат
    With .Replacement.Font
      .Subscript = False
      .Superscript = False
    End With
    .Replacement.Text = "_{^&}"
    .Execute Replace:=wdReplaceAll
    
    'То же самое делаем для выражения x
    .Text = "x"
    .Replacement.Text = "_{^&}"
    .Execute Replace:=wdReplaceAll
  End With
End Sub
Символы ^& означают, что нужно вставить найденный текст
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 14.09.2009, 18:07   #5
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Согласен,что нужно залезть в формат. Только вот не получается почему-то.
Я накидал так код
Код:
Sub test()
    With ActiveDocument.Range.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Font.Subscript = wdToggle
            .Text = "1-x"
            .Replacement.Text = "_{1-x}"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute Replace:=wdReplaceAll
    End With
End Sub
Когда делаю вручную(при записи рекордером) все работает,а при последующем запуске уже записанного макроса,замененный текст остается подстрочным. Что не так?
Дальше мне нужно будет сделать так чтобы любой подстрочный текст заменялся. Если заменить в коде 1-x на *,получится?
mephist вне форума Ответить с цитированием
Старый 14.09.2009, 18:19   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Если нужно, чтобы любой подстрочный текст заменялся, то поле найти нужно оставить пустым и сделать формат «подстрочный»
Замененный текст остается подстрочным, потому что ты не задал формат шрифта для замены. Посмотри внимательно мой макрос
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество знаков Flangini Microsoft Office Excel 9 02.07.2009 15:22
замена знаков и букв memka PHP 8 19.04.2009 18:51
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52
(+,-,*,/)Расстановка знаков МаксимNEWProgramm Паскаль, Turbo Pascal, PascalABC.NET 5 17.04.2008 17:04