如何在vba中用SetWindowPos调整窗口的大小

比如想要excel应用程序打开以后的大小为700*700像素,可以使用api函数SetWindowPos来实现。

SetWindowPos函数可以改变顶层窗口、子窗口、或者弹出窗口的大小、位置和Z序。

SetWindowPos的语法如下:

BOOL WINAPI SetWindowPos(
  _In_     HWND hWnd,
  _In_opt_ HWND hWndInsertAfter,
  _In_     int  X,
  _In_     int  Y,
  _In_     int  cx,
  _In_     int  cy,
  _In_     UINT uFlags
);

它的参数hWnd [in]表示要调整的窗口的句柄。
hWndInsertAfter [in, optional] 表示要将调整的窗口至于哪个窗口之前,如果设置为0表示放在Z序的最前面。
X [in] 表示该窗口的新X轴坐标,是以客户坐标的形式表示。
Y [in]表示该窗口的新Y轴坐标,是以客户坐标的形式表示。
cx [in]表示该窗口的新宽度,以像素表示。
cy [in]表示该窗口的新高度,以像素表示。
uFlags [in]是一些标记用于影响最终的窗口的大小和位置,具体的可以看帮助文档。

以下是一个打开工作簿就执行的代码,将使得打开的工作簿的大小保持在700*700像素。

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Sub Workbook_Open()
    Dim iHwnd
    iHwnd = Excel.Application.hwnd
    SetWindowPos iHwnd, 0, 0, 0, 700, 700, 0
End Sub

 

       

发表评论