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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2020, 13:51   #1
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию Расширение области действия макроса на сноски

Подскажите, пожалуйста, какую строку нужно дописать в простенький макрос замены (кавычек елочных - фигурными, например), чтобы он работал не только в основном тексте, но и в сносках (и постраничных, и концевых)
caute вне форума Ответить с цитированием
Старый 11.11.2020, 16:57   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Использовать StoryRanges
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 11.11.2020, 18:01   #3
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

там для программеров написано, а хотелось бы для простых смертных
caute вне форума Ответить с цитированием
Старый 11.11.2020, 18:34   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Простые смертные для начала хоть макрос покажут, который надо доработать.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 11.11.2020, 18:41   #5
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

У меня их несколько, вот один (только не смейтесь):
Код:
Sub кавычки_фигурные()
    Options.AutoFormatAsYouTypeReplaceQuotes = False
    With Selection.Find
        .Text = "«"
        .Replacement.Text = "“"
        .Wrap = wdFindContinue
    Selection.Find.Execute Replace:=wdReplaceAll
        .Text = "»"
        .Replacement.Text = "”"
        .Wrap = wdFindContinue 'по всему тексту
        Selection.Find.Execute Replace:=wdReplaceAll
    End With
    Options.AutoFormatAsYouTypeReplaceQuotes = True
    End Sub
caute вне форума Ответить с цитированием
Старый 11.11.2020, 18:57   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Смеяться тут нечего.
Примерно так это будет
Код:
Dim stories
'  Массив с индексами частей документа
stories = Array(WdStoryType.wdMainTextStory, wdFootnotesStory, wdEndnotesStory)
Dim rng As Range
Options.AutoFormatAsYouTypeReplaceQuotes = False
For Each st In stories
'    Игнорируем ошибки на случай, если каких-то сносок нет
  On Error Resume Next
'    Берём нужную часть документа
  Set rng = StoryRanges(st)
'    Делаем замену. Это твой код немного испрвленный
  With rng.Find
    Text = "«"
      .Replacement.Text = "“"
      .Wrap = wdFindContinue
      .Execute Replace:=wdReplaceAll
      .Text = "»"
      .Replacement.Text = "”"
      .Wrap = wdFindContinue 'по всему тексту
      .Execute Replace:=wdReplaceAll
  End With
'    Очищаем ошибки, если были
  Err.Clear
Next
Options.AutoFormatAsYouTypeReplaceQuotes = True
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 11.11.2020, 19:11   #7
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

Выделяет StoryRange и пишет "Compile Error: Sub or Function not defined"
caute вне форума Ответить с цитированием
Старый 11.11.2020, 19:50   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

А, может быть. Добавь ActiveDocument
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 11.11.2020, 20:03   #9
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

Теперь работает, но меняет только закрывающую кавычку (во всех частях документа)
caute вне форума Ответить с цитированием
Старый 11.11.2020, 20:27   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

точку пропустил перед Text сразу после With rng.Find
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по области действия переменных Maks_Andreev Общие вопросы по Java, Java SE, Kotlin 1 18.03.2016 22:00
DELPHI Выбрать все файлы в каталоге и если расширение .lnk - переименовать, удалив расширение ТипичныйСтудент Помощь студентам 1 14.03.2014 23:54
Расширение области видимости локального объекта на все файлы. mmx358 Общие вопросы C/C++ 9 13.07.2012 11:18
Проверить принадлежит ли точка закрашенной области, границе или находится вне области (код на Pascal) homk Помощь студентам 3 07.09.2011 23:16
сноски dima9 Microsoft Office Word 10 27.11.2009 09:57