excel - VBA API 声明。无论应用程序如何,将窗口置于前面

标签 excel vba

我正在尝试将 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

VBA 中的 AppActivate() 方法采用字符串参数,它将激活(即将其置于前面)包含该<的任何窗口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

关于excel - VBA API 声明。无论应用程序如何,将窗口置于前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481674/

相关文章:

excel - 如何使用Matlab中Excel表格中的信息读取一个文件夹中的所有.wav音频文件?

excel - 计算单元格 block 中的行数

ms-access - 如何从驻留在 Microsoft Office Access 类对象中的模块执行代码

excel - 循环遍历已过滤的枢轴项目

vba - 使用鼠标滚动的 Excel ComboBox

java - 使用 Apache POI 将字符串 ArrayList 中的大量数据写入 Excel 文件

vba - 查找范围内填充数据的最后一列

vba - 如何使用 VBA 宏重命名模块?

vba - 打开excel文件时出现运行时错误

VBA Excel 2010 - 将图表分配给对象/变量