Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

В этом выпуске опубликованы следующие советы:


Word Expert - профессиональная работа с текстом

Выпуск рассылки №141 от 2009-12-27 20:45

В этом выпуске:

  1. Несколько слов от автора рассылки
  2. Советы и подсказки
  3. Полезные ссылки
  4. Информация об авторских правах

Несколько слов от автора рассылки


Друзья!
Сердечно поздравляю вас с самым радостным и волнующим праздником - Новым 2010 годом!
Накануне нового года хочу вам сообщить очень хорошие новости - сайт обзавелся новым дизайном и движком, что улучшило не только его внешний вид, но и работоспособность.
Но и это еще не все! Появился форум, на котором вы сможете задавать свои вопросы. Я, совместно с моими соавторами, постараюсь отвечать на них более оперативно, чем это было раньше (много писем, а я один с ограниченными ресурсами времени). И надеюсь, что более опытные читатели сайта тоже будут отвечать на вопросы новичков.
Добро пожаловать!

Советы и подсказки

Особые колонтитулы для нечетных страниц

Тема "раздельных" колонтитулов поднималась на этом сайте неоднократно. Но очередной вопрос читателя Владимира поставил меня в тупик. В частности, Владимир спрашивал:
По ГОСТ18675-79, если текст в разделе заканчивается на нечетной странице, то номер этой страницы должен иметь вид n/n+1, например 7/8, так как на следующей - четной странице текст отсутствует, а новый раздел начинается с нечетной страницы (9). Предыдущие страницы имеют нормальную нумерацию. Можно ли в Ворде реализовать такую нумерацию автоматически?

Я обратился в Клуб программистов и через день мой соавтор Александр Витер предложил практическое решение, основанное на применении макроса и использовании полей в колонтитулах. Ход размышлений Александра и обсуждение возможных решений можно почитать на здесь.


В этой же заметке с разрешения Александра я публикую только результат найденного решения со своими пояснениями.

Если вы хотите реализовать это решение, то необходимо:
- открыть шаблон документа (или сам документ) в режиме редактирования;
- перейти в нижний или верхний колонтитул;
- вставить следующее поле (Напоминаю, что поля вставляются через нажатие сочетания клавиш «CTRL+F9»):
{ IF {=(({ =MOD({ PAGE };2) }<>0)*({PAGE}={=INT({ DOCVARIABLE { QUOTE Sec{ SECTION }PageCount } }) })*({ PAGE }<{ NUMPAGES }) )} = 1 { QUOTE { PAGE }/{ =SUM({ PAGE };1) } } { PAGE } }
Когда вы вставите поле (при условии корректного ввода вложенных полей), то в колонтитуле после обновления полей будет отображаться обычный номер текущей страницы.
- открыть редактор VIsual Basic («ALT+F11») и вставить следующий код:
Sub StupidNumbering()
'Такое название потому, что я считаю глупым следовать стандартам,
'разработанным бог знает когда и не несущим практической пользы
On Error Resume Next
Dim oSec As Section 'Переменная для перечисления разделов
Dim nPagesCountEndSec As Long 'Количество страниц от начала документа до конца раздела
Dim ovar As Variable 'Переменная для перечисления переменных документа

For Each oSec In ActiveDocument.Sections
   'Количество страниц до конца раздела
   nPagesCountEndSec = oSec.Range.Information(wdActiveEndPageNumber)
   'Добавляем переменную в документ
   ActiveDocument.Variables.Add "Sec" & oSec.Index & "PageCount", nPagesCountEndSec
   If Err.Number = 5903 Then 'Если такая переменная в документе уже есть
      'Обновляем значение переменной
      ActiveDocument.Variables("Sec" & oSec.Index & "PageCount").Value = nPagesCountEndSec
      'Очищаем ошибку
      Err.Clear
   End If
Next
'Обновляем поля в документе
ActiveDocument.Fields.Update
'Это для контроля имен переменных и их значений. На
'функциональность это не влияет.
For Each ovar In ActiveDocument.Variables
   Debug.Print ovar.Name & vbTab & ovar.Value
Next
End Sub
- выполняем макрос. Можно разместить кнопку макроса на панели инструментов шаблона для удобства использования.

В результате на нечетных страницах, имеющих разрыв раздела, будет вставлена особая нумерация с дробью, как того и хотел Владимир.
Оставить комментарий | Задать вопрос

Псевдокириллица: макрос замены латиницы на кириллицу

Евгения спрашивает:
Подскажите, пожалуйста, возможно ли в Word 2007 создать макрос для замены смеси русских и латинских букв на только русские?
Я - редактор, и в присланном мне автором многостраничном - более 11-ти авторских листов - файле практически в каждом слове при наборе были употреблены кириллица и латиница. Выбирать ошибки по одной очень долго, и велика вероятность что-то пропустить. Возможно ли как-то автоматизировать этот процесс?


Евгения, если я правильно понял, вам нужно заменить латинские буквы на кирилические? То есть, если в тексте встречается буква латинская "a", то ее нужно заменить на "ф", так? В этом случае, полагаю, что вам может подойти вот этот макрос:
Sub changeLatToRus()
'Замена во всем документе латинских букв на киррилические
Dim i As Integer
Dim sLat As Variant
Dim sRus As Variant
Dim rDoc As Range

Set rDoc = ActiveDocument.Range
'список латинских букв
sLat = Array("q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", _
               "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m", "Q", "W", _
               "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", _
               "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M")
sRus = Array("й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "ф", "ы", "в", "а", _
               "п", "р", "о", "л", "д", "я", "ч", "с", "м", "и", "т", "ь", "Й", "Ц", _
               "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Ф", "Ы", "В", "А", _
               "П", "Р", "О", "Л", "Д", "Я", "Ч", "С", "М", "И", "Т", "Ь")
Application.ScreenUpdating = False  ' Запрещаем обновление экрана во время работы макроса
With rDoc.Find
'заменяем все латинские символы на соответствующие кириллические
   .ClearFormatting
   .Replacement.ClearFormatting
   .Forward = True
   .Wrap = wdFindStop
   .MatchWildcards = False
   .Format = True
   .MatchCase = True
   For i = LBound(sLat) To UBound(sRus)
      .Text = sLat(i)
      .Replacement.Text = sRus(i)
      .Execute Replace:=wdReplaceAll
   Next i
End With
Application.ScreenUpdating = True  ' Обновляем экран
End Sub
Оставить комментарий | Задать вопрос

Полезные ссылки

Информация об авторских правах

Вся информация, представленная на сайте WordExpert.ru и в этой рассылке, никаким образом не связана с корпорацией Microsoft. В рассылке упоминаются компании и продукты, которые могут быть зарегистрированными торговыми марками и принадлежать различным физическим и юридическим лицам как на территории РФ, так и за ее пределами.

Авторские права на все материалы, опубликованные на сайте WordExpert.ru и в этой рассылке (включая текст, фотографии, подборку, расположение и т.п.) принадлежат Кокину Антону Вадимовичу, если не указано иное. Вы можете свободно использовать и распространять эти материалы с обязательной ссылкой вида "Информация с сайта WordExpert.ru" и с обязательным указанием автора материала.

Все материалы, опубликованные на сайте WordExpert.ru и в этой рассылке, представлены на информационной основе. Вы можете использовать любую информацию с сайта WordExpert.ru или из данной рассылки исключительно на свой страх и риск. Тем не менее, я рекомендую перед применением какой-либо информации с сайта WordExpert.ru или из данной рассылки обязательно сохранять и создавать резервные копии ваших документов.

В этой рассылке также упоминаются различные web-страницы с соответствующими ссылками. Эти ссылки указываются исключительно в информационных целях и никакой рекомендации или одобрения с моей стороны данных веб-страниц не подразумевается, если не указано иное.


В избранное