Статьи из блога

Как расположить два открытых документа Word рядом: полезная макрокоманда

Неделю тому назад (5 июля 2006г.) один из читателей моей почтовой рассылки Леонид Бродский прислал очень полезный совет по удобному способу вычислений в таблицах Word. Этот совет я опубликовал здесь.

 

А теперь Леонид предлагает установить на панель инструментов дополнительные кнопки, повышающие удобство работы с текстовым редактором Word 2002. В частности мне показалась очень интересной кнопка, позволяющая выставлять окна открытых документов рядом друг с другом по вертикали. Стандартная команда Word делает почти то же самое, кроме одного - открытые документы выстраиваются друг под другом горизонтально (в версии Word 2003 уже есть команда выстроить окна по вертикали).

  1. Создайте новый документ.
  2. Зайдите в меню Сервис (Tools) и подведите курсор мыши к команде Макрос (Macro). В появившемся справа меню выберите команду Макросы (Macros).

    Откроется диалоговое окно как на скриншоте:

     

    Диалоговое окно Макрос
  3.  

  4. В поле Имя (Macro name) напечатайте любое слово латинскими буквами. Пусть будет windows.
  5. Ниже, в поле Макросы из: (Macros insmile выберите из списка - Normal.dot (общего шаблона) (Normal.dot (global template)).
  6. Нажмите кнопку Создать (Create). Откроется рабочее окно редактора кода Microsoft Visual Basic.
  7. В окне редактора удалите весь имеющийся текст и вставьте следующий код:

    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
  8. После чего сохраняетесь и закрываете редактор кода.
  9. Теперь необходимо поместить кнопку этой макрокоманды на панель инструментов. Для этого зайдите в меню Сервис (Tools) и выберите команду Настройка (Customize).
  10. В появившемся диалоговом окне выберите вкладку Команды (Commands) и в левой области найдите и выберите категорию Макросы (Macros). В правой области появятся доступные команды. Выберите команду с названием Normal.NewMacros.ArrangeDocWindows
  11. Удерживая левую кнопку мыши нажатой перенесите эту команду на вашу панель инструментов. На панели появится кнопка с вышеприведенным текстом.
  12. Можете оставить текст на кнопке как есть или присвойте ей какую-либо иконку.

Теперь, чтобы воспользоваться этой кнопкой, вам необходимо иметь открытыми минимум два окна Word. Если у вас они открыты (созданы два документа Word), то жмете на эту кнопку и документы выстраиваются рядом друг с другом по вертикали - бок о бок.

Обратите внимание, что если у вас будет открыто только одно окно, то после нажатия этой кнопки может появиться окно с сообщением редактора кода Visual Basic об ошибке. Закройте его нажав на кнопку End. А в следующий раз будьте внимательны.
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 1

  1. Гость
    22.11.2010 в 16:53 | #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

Оставьте комментарий!

(обязательно)

^ Наверх