Если у вас есть идея или совет по эффективному использованию редактора Word, то пишите мне через форму контактов на сайте. Любые ваши дельные советы и подсказки будут размещены в очередных выпусках рассылки и на сайте (с указанием вашего авторства).
Отправка документа на печать на разные сетевые принтеры
Поступил интересный вопрос от Павла. Он спрашивает:
У меня подключено несколько сетевых принтеров. Можно ли с помощью разных кнопок-макросов печатать на разные предопределенные принтера, а не только на принтер по умолчанию?
Мой соавтор Александр Витер предложил воспользоваться методом ActivePrinter, и я набросал небольшой макрос. Пусть, например, у вас есть сетевой принтер по имени "Полное_Сетевое_Имя_Принтера" (смотрите наименования в настройках печати). Тогда макрос будет следующий:
Public Sub prNet()
'Печать документа из сетевого принтера, установленного не по умолчанию
Dim sMyPrinter As String
Dim netPrinter As String
'Запоминаем текущий принтер по умолчанию
sMyPrinter = Application.ActivePrinter
'Присваиваем переменной имя сетевого принтера
netPrinter = "Полное_Сетевое_Имя_Принтера"
'Делаем активным сетевой принтер
Application.ActivePrinter = netPrinter
'Печатаем документ с текущими настройками
ActiveDocument.PrintOut
'Восстанавливаем принтер по умолчанию
Application.ActivePrinter = sMyPrinter
End Sub
Сделайте такой же макрос (измените его имя) для других принтеров и выведите кнопки этих макросов на панель инструментов.
Задать обтекание текстом для всех рисунков в документе
Вопрос от Макса: Нужно в документе WORD сделать обтекание текстом ВСЕХ рисунков. Как это сделать? По одному делается без проблем, но их очень много, а всех вместе никак...
Попробуйте такой макрос (на копии документа - на всякий случай):
Sub wrapImages()
'Обтекание текстом для всех типов графических объектов
Dim pic As Object
On Error Resume Next
For Each pic In ActiveDocument.Content.InlineShapes
If pic.Type = wdInlineShapePicture Then
pic.InlineShapes(1).ConvertToShape
pic.ShapeRange.WrapFormat.Type = wdWrapTight
End If
Next
For Each pic In ActiveDocument.Content.ShapeRange
If pic.Type = msoPicture Then
pic.ShapeRange.WrapFormat.Type = wdWrapSquare
End If
Next
End Sub
Валерий спрашивает:
Как из текста в Word 2007 выбрать все слова на определенную букву, расположить их в алфавитном порядке и сохранить их в отдельном файле?
Валерий, вот пример макроса для ваших целей, подсказанный Александром Витером.
Sub startWordsChar2()
'Поиск слов, начинающихся с определенной буквы и перенос их в
'отсортированный по алфавиту список в новый документ
Dim bukva As String
Dim newDoc As Document
Dim actDoc As Document
Dim oPar As Paragraph
Dim rng As Range
Set actDoc = ActiveDocument
Set rng = actDoc.Range
Do
bukva = InputBox("Введите начальную букву слова в поле:", "Поиск слов")
If StrPtr(bukva) = 0 Then
Exit Sub
ElseIf Len(bukva) = 0 Then
MsgBox "Введите пожалуйста начальную букву " & vbCr & "или нажмите кнопку 'Cancel"
End If
Loop Until Len(bukva) <> 0
Application.ScreenUpdating = False
Set newDoc = Documents.Add
'Ищем слово, начинающееся с указанной буквы в любом регистре
With actDoc.Range.Find
.Text = "<[" & StrConv(bukva & bukva, vbProperCase) & "][А-Яа-яЁё]@>"
.MatchWildcards = True
While .Execute
Application.StatusBar = "Добавляем " & bukva
newDoc.Range.InsertAfter Trim(.Parent.Text)
newDoc.Range.InsertParagraphAfter
Wend
End With
'Сортируем содержимое нового документа
newDoc.Range.Sort , "Paragraphs", wdSortFieldAlphanumeric, wdSortOrderAscending
'Удаляем первый пустой абзац
newDoc.Paragraphs(1).Range.Delete
'Поскольку в каждом абзаце находится по одному слову, то нужно только перебирать абзацы и удалять _
все слова, которые содержатся в текущем
For Each oPar In newDoc.Paragraphs
If oPar.Range.End <> newDoc.Range.End Then
With newDoc.Range(oPar.Range.End, newDoc.Range.End).Find
.Text = oPar.Range.Text
.Replacement.Text = ""
.Execute Replace:=wdReplaceAll
End With
End If
Next
Application.ScreenUpdating = True
End Sub
Проблема с кодировкой при сохранении документа в формат HTML
Постоянный читатель сайта и рассылки Илья недавно задал вопрос:
При сохранении документа word в формат html при открытии документа браузером появляются крякозабры. Причем, независимо от языка. Это происходит с разными браузерами. В чем может быть дело? Office 2007 SP2.
Я не нашелся, что ответить. Но буквально на следующий день Илья самостоятельно обнаружил причину такого поведения. Вот что он сообщил:
Проблема оказалась глубже. Есть такая утилита, которая называется "XFilesDialog" - служит для расширения диалоговых окон. Так вот, когда она запущена, то Word при сохранении текста в формате html вносит в документ нечитаемые символы. А лечится это безобразие отключением опции "Обработать и заменить окно диалога офиса".
Пишу Вам на тот случай, если у кого-то возникнет аналогичная ситуация.
Вся информация, представленная на сайте WordExpert.ru и в этой рассылке, никаким образом не связана с корпорацией Microsoft. В рассылке упоминаются компании и продукты, которые могут быть зарегистрированными торговыми марками и принадлежать различным физическим и юридическим лицам как на территории РФ, так и за ее пределами.
Авторские права на все материалы, опубликованные на сайте WordExpert.ru и в этой рассылке (включая текст, фотографии, подборку, расположение и т.п.) принадлежат Кокину Антону Вадимовичу, если не указано иное. Вы можете свободно использовать и распространять эти материалы с обязательной ссылкой вида "Информация с сайта WordExpert.ru" и с обязательным указанием автора материала.
Все материалы, опубликованные на сайте WordExpert.ru и в этой рассылке, представлены на информационной основе. Вы можете использовать любую информацию с сайта WordExpert.ru или из данной рассылки исключительно на свой страх и риск. Тем не менее, я рекомендую перед применением какой-либо информации с сайта WordExpert.ru или из данной рассылки обязательно сохранять и создавать резервные копии ваших документов.
В этой рассылке также упоминаются различные web-страницы с соответствующими ссылками. Эти ссылки указываются исключительно в информационных целях и никакой рекомендации или одобрения с моей стороны данных веб-страниц не подразумевается, если не указано иное.