Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal WindowName As String) As Long
Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long,Rect As Rect) As Long
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, ByVal Source As Long, ByVal MessageId As Long, ByVal LanguageId As Long, ByVal Buffer As String, ByVal Size As Long, ByVal Arguments As Long) As Long
Private Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Sub ShowExcelWindowSize()
Dim hWnd As Long
Dim aRect As Rect
hWnd = FindWindow("XLMAIN", Application.Caption)
If hWnd = 0 Then
Call MsgBox(LastDLLErrText(Err.LastDllError))
Else
Call GetWindowRect(hWnd, aRect)
Debug.Print " Left: " & aRect.Left
Debug.Print " Right: " & aRect.Right
Debug.Print " Top: " & aRect.Top
Debug.Print " Bottom: " & aRect.Bottom
Debug.Print " Width: " & (aRect.Right - aRect.Left)
Debug.Print " Height: " & (aRect.Bottom - aRect.Top)
End If
End Sub
Function LastDLLErrText(ByVal ErrorCode As Long) As String
Dim Buffer As String * 255
Dim Result As Long
Result = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, ErrorCode, 0, Buffer, 255, 0)
LastDLLErrText = Left(Buffer, Result)
End Function