Статьи из блога
Вставка скопированного текста в предопределенном формате
Сергей задал вопрос:
Довольно часто при работе с текстом нужно вставлять в него цитаты из других документов и было бы удобно, если бы эти цитаты были видны там, куда вставляешь. Т.е., при вставке необходимо, чтобы новый текст вставлялся уже в другом, заранее определенном форматировании (курсивом, цветом и пр.) в отличие от основного текста.
Если бы Вы смогли мне помочь в этом? Кстати, я думаю, что такая особенность работы с текстом была бы необходима многим.
Самый лучший способ - использовать специальные стили для вашего фрагмента текста. Вставляете текст и применяете к нему соответствующий стиль. Это не сложно. Но чтобы вставляемый текст автоматически преобразовывался в этот стиль - так не получится.
Либо, есть еще решение использовать макрос, который бы брал текст из буфера обмена, вставлял его и уже потом применял к вставленному тексту нужное форматирование. Для макроса нужно создать кнопку на панели инструментов и после того, как скопировали текст, следует установить курсор в нужное вам место документа и нажать эту кнопку.
Вот примерный код макроса. После того, как вы скопировали текст из любого источника, поставьте указатель мыши в то место документа, где вам нужно вставить цитату, и нажмите кнопку макроса.
Sub insertQuotes() 'Вставка текста из буфера обмена в качестве цитаты и задание форматирования On Error Resume Next 'игнорируем ошибку Dim MyData As DataObject Set MyData = New DataObject MyData.GetFromClipboard Selection.Text = MyData.GetText(1) 'вставляем текст 'удаляем лишние пробелы в конце выделения и знак абзаца If Right(Selection.Text, 1) = Chr(32) Or _ Right(Selection.Text, 1) = Chr(13) Then Selection.MoveLeft wdCharacter, 1, wdExtend End If 'обрамляем выделенный текст кавычками With Selection .InsertBefore Chr(148) .InsertAfter Chr(147) End With 'устанавливаем отступы сверху, снизу и по бокам цитаты With Selection.ParagraphFormat .LeftIndent = CentimetersToPoints(1) .RightIndent = CentimetersToPoints(0.5) .SpaceBefore = 12 .SpaceAfter = 12 End With 'форматируем шрифт With Selection.Font .Name = "Times New Roman" .Size = 11 .Italic = True .Color = wdColorGray50 End With End Sub
Метки: макросы | стили | форматирование
Просмотров: 22968
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне в Word 2007
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
Комментариев: 15
Антон, да вы классный програмист! Отличный сайт! Может, нам совместно создать программу или шаблон для форматирования сценариев? Типа "Писарь" или Final Draft, но под кириллицу?
Александр, вы преувеличиваете. Я начинающий (правда, уже давно) программист на VBA. Сейчас несколько отошел от этого, так как нет пока задачи, интересной мне.
Что касается программы или шаблона, то может быть нам поможет мой соавтор-программист Александр Витер.
И я не встречал упоминаемых вами программ. Можете привести ссылки?
Нашел сам. Надо посмотреть.
Антон,
я написал в своём блоге про сценарные проги и шаблоны.
http://new-storyteller.livejournal.com/10438.html
В принципе, наверное, народу достаточно и "Писаря". Хотя, на мой взгляд, он нуждается в доводке.
Ладно, это не так интересно.
Отлично. Прочитаю. Я, кстати, сегодня смотрел эти две проги. Английская мне показалось сложной для работы - читал справку и тыкал клавиши, чтобы вышло что-нибудь. И это же самостоятельный редактор.
А шаблон нашего соотечественника понятен.
Вопрос в другом: что именно необходимо в нем изменить или чем он не устраивает? Мне сложно судить, так как я не совсем в курсе сценарных требований.
По-моему эта задача решается следующим образом: изначально для своих документов создаёшь собственный шаблон с защитой по возможным стилям (лично у меня - три заголовочных, два текстовых, по одному для таблиц, примечаний и оглавлений) - когда в такой документ вставляется кусок из другого документа, он автоматически форматируется "умолчательным" основным - т.е. как бы без стиля - поэтому он отлячается от других абзацев.
каким образом Вам можно задать вопрос?
А у меня макрос не работает, пишет что ошибка в этих строках:
Dim MyData As DataObject
Set MyData = New DataObject
Иван, вам нужно подключить библиотеку типов Microsoft Scripting Runtime. Откройте редактор VB, меню Tools - References. Найдите и установите флажок на указанной библитетеке.
Нет, Иван, Вам нужно подключить Microsoft Forms 2.0 Object Library. В ней содержится объект DataObject, который используется для работы с буфером обмена.
И еще добавлю, что лучше использовать не прямое форматирование, а создать собственный стиль для цитат или изменить встроенный, который так и называется «Цитата». Тогда вместо
написать всего одну строчку:
Спасибо, Антон!
Подключил Вами предложенную библиотеку (+еще некоторые) и макрос заработал. По адресу
http://benoni.mylivepage.ru/file/2494
находится украинский перевод VisualBasicOffice6, который работает в Worde 2007.
Спасибо, Александр!
Тоже неплохо. Действительно, предложенных Антоном библиотек, оказалось маловато. Макрос заработал при включенной Microsoft Forms 2.0 Object Library.
Антон, Александр!
Вы не знаете, что заменяет Microsoft Forms 2.0 Object Library в Office 2010? Там я этой библиотеки не нахожу.
Не знаю. А что ее может замеинть? Эта библиотека должна быть по этому пути: C:\WINDOWS\system32\FM20.DLL. Если ее там нет, скажите, я вам пришлю. Если есть, но всё рввно не видна в окне Tools→References, то ее нужно зарегистрировать в системе.
Чтобы зарегистрировать нужно зайти меню «Пуск»→«Выполнить…» и ввести regsvr32 C:\WINDOWS\system32\FM20.DLL
Александр!
Нужная библиотека есть по адресу: C:\WINDOWS\system32\FM20.DLL, но не видна в окне Tools→References.
Зарегистрировать в системе не удаётся (наверное она зарегистрированная). Пошел другим путем:в окне Tools→References при помощи Brause открыл путь к ней по выше Вами указаному адресу, нашел её, открыл (добавил в список) и поставил против неё птичку. Спасибо!
Office 2010 очень гибкий! Наверное надо создать отдельную страницу по нём!