当前位置:  开发笔记 > 后端 > 正文

VBA API声明.无论何种应用,都可以将窗户置于正面

如何解决《VBAAPI声明.无论何种应用,都可以将窗户置于正面》经验,为你挑选了2个好方法。

我试图将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

目前没有任何事情发生.



1> Sam..:

您不需要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



2> 小智..:

经过一番研究后找到了我想要做的事情的答案.

这会将您指定的工作表带到前面.

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

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有