我试图将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
目前没有任何事情发生.
您不需要API,您可以使用以下内容:
Sub BringXLToFront() AppActivate Application.Caption End Sub
AppActivate()
VBA中的方法采用字符串参数,它将激活(即将其带到前面)任何包含该精确字符串的窗口.
更具体的问题 - 您需要了解API如何在VBA中工作 - 如果您使用的是x64系统,那么您需要使用条件编译并通过使用PtrSafe
关键字和API将API函数声明为指针安全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
经过一番研究后找到了我想要做的事情的答案.
这会将您指定的工作表带到前面.
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