Reputation: 1
Hi this is my first post in here, sorry for wrong posting. I need always on top MS Word so I can take note while webex meeting. I cannot install any software like AHK, as this is company policy
I found a way to always on top for excel using VBA from extendoffice.com Link
Following are the programming
'Update 20140909
\#If Win64 Then
Public Declare PtrSafe Function SetWindowPos \_
Lib "user32" ( \_
ByVal hwnd As LongPtr, \_
ByVal hwndInsertAfter As LongPtr, \_
ByVal x As Long, ByVal y As Long, \_
ByVal cx As Long, ByVal cy As Long, \_
ByVal wFlags As Long) \_
As Long
\#Else
Public 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
\#End If
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Sub ShowXLOnTop(ByVal OnTop As Boolean)
Dim xStype As Long
\#If Win64 Then
Dim xHwnd As LongPtr
\#Else
Dim xHwnd As Long
\#End If
If OnTop Then
xStype = HWND_TOPMOST
Else
xStype = HWND_NOTOPMOST
End If
Call SetWindowPos(Application.hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub
Sub SetXLOnTop()
ShowXLOnTop True
End Sub
Sub SetXLNormal()
ShowXLOnTop False
End Sub
I tried on excel and its really work. but when tried on Word using VBA for Word, error with following description:
Compile Error: Method or data member not found(picture) Error location screenshot
I tried to change
Call SetWindowPos(Application.hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
to
Call SetWindowPos(Window.Hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
source
still not working. can anyone help me. my skills in programming is basic, as I only copy and paste people program only. thanks!
Upvotes: 0
Views: 272
Reputation: 1
Just need to change
Call SetWindowPos(Application.hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
to
Call SetWindowPos(ActiveWindow.hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
Application.hwnd
is for excel https://learn.microsoft.com/en-us/office/vba/api/excel.application.hwnd
ActiveWindow.hwnd
is for word https://www.codevba.com/Word/Window/Hwnd.htm#.Y8ShmI4zYuU
Upvotes: 0