Данное руководство теперь совершенно неактуально, поскольку отныне мой оффлайн-редактор (ссылка на крайнюю версию в профиле) позволяет импортировать созданные в MS Word документы, автоматически расставляя нужные теги.
Тут неподалеку было предложение упростить подготовку постов для публикации. Оно навело меня на мысль, что ведь в MS Word есть для этого почти все средства - макросы! Некоторое время назад на работе мне как раз пришлось в срочном порядке освоить азы макросописания для схожих целей - нужно было как раз в огромном документе обрамить тегами жирный/курсивный текст и выделить абзацы. Вот доработанные макросы я и хочу вам предложить.
К сожалению, я больше математик, чем программист, так что не для всего есть макросы, да и есть кое-какие правила использования имеющихся.
Пока что есть макросы только на выделенный текст и на его выравнивание в абзацах. Мало, конечно, но это потенциально самые частые элементы оформления.
Комментарии к макросам:
- Сколько я ни бился, не нашел способа отконтролировать достижение конца документа, поэтому выполнение макросов для шрифтов придется прерывать вручную через несколько секунд работы нажатием Ctrl+Break. Если делать по аналогии с макросами для параграфов, то выходит хуже.
- Заголовки (h1 и h2) я еще не придумал как лучше сделать.
- После выделенного жирным/курсивом/подчеркиванием/зачеркиванием куска текста (с учетом знаков препинания) должен обязательно идти пробел.
- Макрос на выравнивание текста в абзацах также добавляет пустые строки между ними (у нас же нет отступа между абзацами).
- Списки, картинки, таблицы лучше тоже добавлять потом, на всякий случай.
А теперь само руководство по добавлению макросов:
Запускаем MS Word, нажимаем Alt+F11. Появится окошко Visual Basic. Слева будет Project Normal – это проект, который относится к шаблону Normal.dot, из которого по умолчанию создается новый документ. Соответственно, все макросы в этом шаблоне будут доступны во всех документах .doc.
Выбираем Normal в списке, далее правой кнопкой мышки, Insert -> Module (или в меню сверху).
Два раза кликаем на новый модуль, откроется окошко, в которое надо вбивать код. Копируем код, сохраняем.
Внимание! Здесь самая важная часть поста!
Сначала дам простенький код, выполнение которого будет заключать выделенный текст в нужные теги. Соответственно, можете сами продублировать все теги, какие тут есть, назначить клавиши - и редактируйте в "ворде" как на сайте. Не забудьте только менять "Unnamed" (название макроса) и "тег" на нужный тег. :)
Спойлер
Public Sub Unnamed()
With Selection
.InsertAfter "[/тег]"
.InsertBefore "[тег]"
End With
End Sub
|
Теперь, собственно, те макросы, о которых я говорил вначале.
Не забудьте удалить в коде лишние пробелы в тегах
(все пробелы из квадратных скобок)
жирныйPublic Sub FontBoldToTags()
Do While (1)
With Selection
With .Find
.ClearFormatting
.Font.Bold = True
.Execute FindText:="", Format:=True
End With
Do Until .Font.Bold = wdUndefined
.MoveRight Unit:=wdWord, Extend:=wdExtend
Loop
.MoveLeft Unit:=wdWord, Extend:=wdExtend
.MoveLeft Extend:=wdExtend
.Font.Bold = False
.InsertBefore "[b ]"
.InsertAfter "[/b ]"
.MoveRight
End With
Loop
End Sub |
курсивPublic Sub FontItalicToTags()
Do While (1)
With Selection
With .Find
.ClearFormatting
.Font.Italic = True
.Execute FindText:="", Format:=True
End With
Do Until .Font.Italic = wdUndefined
.MoveRight Unit:=wdWord, Extend:=wdExtend
Loop
.MoveLeft Unit:=wdWord, Extend:=wdExtend
.MoveLeft Extend:=wdExtend
.Font.Italic = False
.InsertBefore "[i ]"
.InsertAfter "[/i ]"
.MoveRight
End With
Loop
End Sub |
зачеркиваниеPublic Sub FontStrikeThroughToTags()
Do While (1)
With Selection
With .Find
.ClearFormatting
.Font.StrikeThrough = True
.Execute FindText:="", Format:=True
End With
Do Until .Font.StrikeThrough = wdUndefined
.MoveRight Unit:=wdWord, Extend:=wdExtend
Loop
.MoveLeft Unit:=wdWord, Extend:=wdExtend
.MoveLeft Extend:=wdExtend
.Font.StrikeThrough = False
.InsertBefore "[s ]"
.InsertAfter "[/s ]"
.MoveRight
End With
Loop
End Sub |
подчеркиваниеPublic Sub FontUnderlineToTags()
Do While (1)
With Selection
With .Find
.ClearFormatting
.Font.Underline = True
.Execute FindText:="", Format:=True
End With
Do Until .Font.Underline = wdUndefined
.MoveRight Unit:=wdWord, Extend:=wdExtend
Loop
.MoveLeft Unit:=wdWord, Extend:=wdExtend
.MoveLeft Extend:=wdExtend
.Font.Underline = False
.InsertBefore "[u ]"
.InsertAfter "[/u ]"
.MoveRight
End With
Loop
End Sub |
абзацыPublic Sub ParagraphTextAlignment()
With ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Execute FindText:="", ReplaceWith:="[center ]^&[/center ] ^p", _
Replace:=wdReplaceAll
.ParagraphFormat.Alignment = wdAlignParagraphRight
.Execute FindText:="", ReplaceWith:="[right ]^&[/right ] ^p", _
Replace:=wdReplaceAll
.ParagraphFormat.Alignment = wdAlignParagraphLeft
.Execute FindText:="^p", ReplaceWith:=" ^p^p", _
Replace:=wdReplaceAll
End With
End Sub |
Чтобы вызвать макрос, в документе нажимаем Alt+F8. Всплывет небольшое окно, в котором нужно выбрать желаемый макрос и нажать «Выполнить».
И последнее: можно добавить кнопки на выполнение нужных макросов в панель быстрого доступа, например. Или, как вариант, назначить им горячие клавиши. В Word’07 для этого нужно ткнуть маленькую стрелочку в панели быстрого доступа (самая верхняя панель, в строке с названием документа), выбрать пункт «Другие команды». В открывшемся окне нам нужны следующие элементы:
Упрощаем подготовку постов в MS Word, вер.0.3
Упрощаем подготовку постов в MS Word, вер.0.3
Все, настройка закончена, можно пользоваться.
Если что-то забыл, то бейте ногами, но несильно. :)
Правда Midest молодец?
Минимальный уровень для голосования - 1
Безусловно так! | 61.8% | |
Никогда и ни за что! | 38.2% | |