我试图将Excel窗口带到所有正在运行的应用程序的前面。
当前代码,
Private Declare Function SetForegroundWindow _
Lib "user32" _
(ByVal hWnd As Long) As Long
Public Sub Bring_to_front()
SetForegroundWindow wb.Application.hWnd
End Sub
Sub Test()
Set wb = Workbooks("MyWorkBook.xlxs")
call Bring_to_front
End Sub
目前没有任何事情发生。
答案 0 :(得分:12)
您不需要API,您可以使用以下内容:
Sub BringXLToFront()
AppActivate Application.Caption
End Sub
VBA中的AppActivate()
方法接受一个字符串参数,它将激活(即将它带到前面)包含 exact 的任何窗口em> 字符串。
您的问题更具体 - 您需要了解API如何在VBA中工作 - 如果您使用的是x64系统,那么您需要使用条件编译并通过使用API将函数声明为指针安全PtrSafe
个关键字和LongPtr
数据类型:
#If Win64 Then
Private Declare PtrSafe Function SetForegroundWindow Lib "user32" _
(ByVal hWnd As LongPtr) As LongPtr
#Else
Private Declare Function SetForegroundWindow Lib "user32" _
(ByVal hWnd As Long) As Long
#End If
答案 1 :(得分:5)
经过一番研究后找到了我想要做的事情的答案。
这会将您指定的工作表带到前面。
Public Declare Function SetForegroundWindow _
Lib "user32" (ByVal hwnd As Long) As Long
Public Sub Bring_to_front()
Dim setFocus As Long
ThisWorkbook.Worksheets("Sheet1").Activate
setfocus = SetForegroundWindow(Application.hwnd)
End Sub