Статьи из блога
Как расположить два открытых документа Word рядом: полезная макрокоманда
Неделю тому назад (5 июля 2006г.) один из читателей моей почтовой рассылки Леонид Бродский прислал очень полезный совет по удобному способу вычислений в таблицах Word. Этот совет я опубликовал здесь.
А теперь Леонид предлагает установить на панель инструментов дополнительные кнопки, повышающие удобство работы с текстовым редактором Word 2002. В частности мне показалась очень интересной кнопка, позволяющая выставлять окна открытых документов рядом друг с другом по вертикали. Стандартная команда Word делает почти то же самое, кроме одного - открытые документы выстраиваются друг под другом горизонтально (в версии Word 2003 уже есть команда выстроить окна по вертикали).
- Создайте новый документ.
- Зайдите в меню Сервис (Tools) и подведите курсор мыши к команде Макрос (Macro). В появившемся справа меню выберите команду Макросы (Macros).
Откроется диалоговое окно как на скриншоте:
- В поле Имя (Macro name) напечатайте любое слово латинскими буквами. Пусть будет windows.
- Ниже, в поле Макросы из: (Macros in выберите из списка - Normal.dot (общего шаблона) (Normal.dot (global template)).
- Нажмите кнопку Создать (Create). Откроется рабочее окно редактора кода Microsoft Visual Basic.
- В окне редактора удалите весь имеющийся текст и вставьте следующий код:
Sub ArrangeDocWindows() ' ArrangeDocWindows Macro ' Arranges two document windows side by side vertically Dim iMiddle As Integer Dim iClientWid As Integer Dim iClientHi As Integer Dim iWin1 As Integer Dim iWin2 As Integer Dim sPrompt As String Dim sWins As String Dim i As Integer iClientWid = Application.Width - 9 iMiddle = Fix((iClientWid) / 2) iClientHi = Application.Height - 94 iWin1 = 1 iWin2 = 2 If Application.Windows.Count > 2 Then For i = 1 To Application.Windows.Count sPrompt = sPrompt & CStr(i) & " - " & Application.Windows(i).Caption & vbLf Next sWins = InputBox("Enter numbers of windows to arrange separated by space." & vbLf & sPrompt, _ "Choose windows", "1 2") If sWins = "" Then Exit Sub End If iWin1 = CInt(Left(sWins, InStr(sWins, " ") - 1)) iWin2 = CInt(Mid(sWins, InStr(sWins, " ") + 1)) End If Application.Windows(iWin1).Activate Application.Windows(iWin1).WindowState = wdWindowStateNormal With ActiveWindow .Left = 0 .Top = 0 .Height = iClientHi .Width = iMiddle End With Application.Windows(iWin2).Activate Application.Windows(iWin2).WindowState = wdWindowStateNormal With ActiveWindow .Left = iMiddle .Top = 0 .Height = iClientHi .Width = iClientWid - iMiddle End With End Sub
- После чего сохраняетесь и закрываете редактор кода.
- Теперь необходимо поместить кнопку этой макрокоманды на панель инструментов. Для этого зайдите в меню Сервис (Tools) и выберите команду Настройка (Customize).
- В появившемся диалоговом окне выберите вкладку Команды (Commands) и в левой области найдите и выберите категорию Макросы (Macros). В правой области появятся доступные команды. Выберите команду с названием Normal.NewMacros.ArrangeDocWindows
- Удерживая левую кнопку мыши нажатой перенесите эту команду на вашу панель инструментов. На панели появится кнопка с вышеприведенным текстом.
- Можете оставить текст на кнопке как есть или присвойте ей какую-либо иконку.
Теперь, чтобы воспользоваться этой кнопкой, вам необходимо иметь открытыми минимум два окна Word. Если у вас они открыты (созданы два документа Word), то жмете на эту кнопку и документы выстраиваются рядом друг с другом по вертикали - бок о бок.
Метки: макросы | окна
Просмотров: 25667
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 полезных заметок о колонтитулах
- 3 способа очистки списка недавно открытых документов
- Microsoft Office: популярные команды на одной вкладке
- SQL для начинающих: изучите SQL онлайн за 9 часов
- Word 2007: полотно, рисунки, линии
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение всех открытых документов
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне: ностальгия по DOS
- Быстрая смена ориентации страниц документа
- Быстрое выделение идущих рядом слов
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое создание списков в документе
- Быстрый ввод текста с помощью команды =rand()
- Быстрый доступ к диалоговому окну Параметры страницы
Комментариев: 1
Чтобы не появлялось сообщение об ошибке, необходимо немного доработать код.
Sub Два_документа_рядом()
'
' Два_документа_рядом Макрос
' Макрос создан 22.11.2010 metr17
'
Dim iMiddle As Integer
Dim iClientWid As Integer
Dim iClientHi As Integer
Dim iWin1 As Integer
Dim iWin2 As Integer
Dim sPrompt As String
Dim sWins As String
Dim i As Integer
' Добавляем команду
Application.WindowState = wdWindowStateMaximize
iClientWid = Application.Width - 4
iMiddle = Fix((iClientWid) / 2)
iClientHi = Application.Height - 5
' iClientHi = Application.Height - 94
iWin1 = 1
iWin2 = 2
' Если открыт 1 документ
On Error GoTo b
' Если открыто больше 2-х документов
If Application.Windows.Count > 2 Then
For i = 1 To Application.Windows.Count
sPrompt = sPrompt & CStr(i) & " - " & Application.Windows(i).Caption & vbLf
Next
sWins = InputBox("Введите через пробел два номера документов." & vbLf & sPrompt, _
"Выберите документы для размещения", "1 2")
If sWins = "" Then
Exit Sub
End If
iWin1 = CInt(Left(sWins, InStr(sWins, " ") - 1))
iWin2 = CInt(Mid(sWins, InStr(sWins, " ") + 1))
End If
Application.Windows(iWin1).Activate
Application.Windows(iWin1).WindowState = wdWindowStateNormal
With ActiveWindow
.Left = 0
.Top = 0
.Height = iClientHi
.Width = iMiddle
End With
Application.Windows(iWin2).Activate
Application.Windows(iWin2).WindowState = wdWindowStateNormal
With ActiveWindow
.Left = iMiddle
.Top = 0
.Height = iClientHi
.Width = iClientWid - iMiddle
End With
b: If Application.Windows.Count > 2 Then
GoTo a
End If
If Application.Windows.Count = 1 Then
MsgBox "Открыт только один документ", , "Неверная команда!"
End If
a: End Sub