При открытии Excel
Я хочу программно создать новое окно рабочей книги, аналогично команде View Menu -> New Window
в Excel.
Затем я хочу расположить и изменить размеры этих окон до 60%
и40%
разрешения экрана соответственно, и они должны располагаться рядом на горизонтальном мониторе в системе с двумя мониторами.Другой монитор может быть либо вертикальным, либо горизонтальным.
Все это хорошо работает, когда горизонтальный монитор является основным монитором, но если это дополнительный монитор.Первое окно не изменяется должным образом по ширине.и поэтому на правом конце монитора остается неиспользуемая область, как показано на рисунке.
Код изменения размера, который я использую, выглядит какв разделе
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.От этой ссылки.