Изменение размера и правильное расположение окон Excel на конкретном мониторе - PullRequest
0 голосов
/ 27 ноября 2018

При открытии Excel Я хочу программно создать новое окно рабочей книги, аналогично команде View Menu -> New Window в Excel.

Затем я хочу расположить и изменить размеры этих окон до 60% и40% разрешения экрана соответственно, и они должны располагаться рядом на горизонтальном мониторе в системе с двумя мониторами.Другой монитор может быть либо вертикальным, либо горизонтальным.

Все это хорошо работает, когда горизонтальный монитор является основным монитором, но если это дополнительный монитор.Первое окно не изменяется должным образом по ширине.и поэтому на правом конце монитора остается неиспользуемая область, как показано на рисунке.

enter image description here

Код изменения размера, который я использую, выглядит какв разделе

    Sub Resize()
        Dim mainWindow As Window
    Dim secondWindow As Window

    'Recalculate new widths and positions
    Dim mainWindowWidth As Double
    Dim secondWindowWidth As Double

mainWindowWidth = 0.6 * screenWidthPoints
secondWindowWidth = 0.4 * screenWidthPoints

'Assign window variables
If Not IsNull(ActiveWorkbook.Windows(1)) Then
    Set mainWindow = ActiveWorkbook.Windows(1)

    'switch to normal state before setting width, else will throw error if the window state is maximized and then try to set width
    mainWindow.WindowState = xlNormal
    mainWindow.Left = horzMonPoints.Left
    mainWindow.Top = horzMonPoints.Top
    mainWindow.Width = mainWindowWidth
End If

If Not IsNull(ActiveWorkbook.Windows(2)) Then
    Set secondWindow = ActiveWorkbook.Windows(2)
    secondWindow.Top = mainWindow.Top
    secondWindow.Width = secondWindowWidth
    secondWindow.Left = mainWindow.Left + mainWindow.Width
    secondWindow.Height = mainWindow.Height
End If End Sub

Код для вычисления количества мониторов и ширины и высоты мониторов я использовал вызовы API Windows в VBA.От этой ссылки.

...