跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何让Excel窗口始终保持在最前面?

Author Xiaoyang Last modified

当您在多任务处理时,是否觉得Excel窗口总是被其他应用程序隐藏在后面很麻烦?许多用户常常希望Excel工作簿窗口能够保持在前台,这样他们可以在使用其他程序(例如从浏览器或另一个桌面应用程序手动传输数字)时参考或输入数据到Excel中。此功能对于使用双显示器、进行演示或频繁在Excel和其他软件之间切换的用户尤其有用。

遗憾的是,Microsoft Excel 本身并未提供让 Excel 窗口始终位于其他窗口之上的内置设置或选项。无论您使用的是哪个版本,无论是 Office 32 位还是 64 位,通过其标准界面直接将 Excel 置于所有其他打开的窗口之上都不受支持。不过,有一个替代方案可以实现此功能。下面,您会找到适用于各种使用场景的 VBA 代码方法。

使用VBA代码使Excel窗口始终保持在最前面


使用VBA代码使Excel窗口始终保持在最前面

此 VBA 代码解决方案允许您将活动的 Excel 窗口固定在所有其他窗口之上,确保它始终可见且不会被其他应用程序窗口覆盖。无论您使用的是 32 位还是 64 位版本的 Office,下面提供的 VBA 脚本都适用于这两个版本。这种方法特别适合高级 Excel 用户或不允许安装额外软件的环境。

在继续之前,请保存您的工作,因为在运行宏时偶尔可能会发生意外错误或 Excel 重启。此外,请注意,此解决方案仅影响执行宏的 Excel 窗口;其他实例不会自动保持在顶部。

1. 按住键盘上的 ALT + F11 键以启动 Microsoft Visual Basic for Applications 编辑器窗口。这是您可以输入和管理 Excel 工作簿 VBA 代码的环境。

2. 在 VBA 编辑器中,点击 插入 > 模块 以为您的工作簿添加一个新模块。然后,将以下 VBA 代码复制并粘贴到打开的 模块 窗口中:

VBA代码:使Excel窗口始终保持在最前面

'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

此代码使用系统级 API 调用来控制窗口的固定状态。请确保在您的 Excel 设置中启用了宏,以便 VBA 代码能够正常运行。如果遇到“宏被禁用”消息,则可能需要更新您的 Excel 信任中心设置以允许宏执行。

3. 输入代码后,按 F5 或单击 VBA 编辑器中的 运行 按钮。将出现一个 对话框,列出可用的宏。选择名为 SetXLOnTop 的宏,然后单击 运行 以执行它。这将对当前的 Excel 窗口应用“始终在顶部”的状态。参见下图:

a screenshot showing how to run the code

4. 宏运行完成后,您的 Excel 窗口应保持在所有已打开的应用程序之上,从而更容易在多个程序中引用或输入数据,而无需担心 Excel 窗口被隐藏。

此设置将持续有效,直到您手动将其还原。如果您最小化并恢复窗口,“始终在顶部”状态通常会被保留,但关闭并重新打开 Excel 将需要再次运行该宏。

注意:如果您希望将 Excel 窗口返回到正常状态,使其不再始终在顶部,请重复激活过程:按 F5 打开 对话框,选择 SetXNormal 宏,然后单击 运行。您的 Excel 窗口将恢复正常行为。

故障排除提示:如果在运行宏时收到错误,请仔细检查您的宏安全设置,并确保所有宏代码都正确粘贴。某些企业环境可能会限制某些窗口管理操作,因此如果该方法无法按预期工作,请咨询 IT 部门。此外,请确保您以标准用户身份运行 Excel;执行此任务通常不需要管理员权限。

如果您不想安装第三方软件并且熟悉使用 Excel 的内置脚本功能,则此 VBA 解决方案是理想的选择。但是,如果您经常需要固定来自多个应用程序的窗口,您可能更喜欢专用的工具来管理窗口位置。


最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠