VBA如何获取Excel窗口的滚动条句柄
- 2026-09-26 14:15:56
VBA如何获取Excel窗口的滚动条句柄我们使用的Excel工作簿到底是由哪些部分组成的呢? 我们又该如何获取Excel窗口的水平和垂直滚动条的句柄呢? VBA学着学着你就会发现,有太多你感兴趣的知识了,就连这些基础的窗口组成你都不愿意错过!这里是晚间有雨伴人眠,让我们一起来看看今天要分享的实用代码吧!
这两个Windows Api函数分别是FindWindow和FindWindowEx,前者用于查找顶级窗口(没有父窗口的窗口),后者用于查找子窗口(父窗口的某个子窗口)。 在你的电脑上有各种各样的应用程序,它们以矩形窗口的方式呈现。每个窗口都有它对应的身份证,只是其中的名称叫法不一样,比如身份证号码对应在窗口上叫做窗口句柄,民族对应在窗口上就做窗口类,姓名对应在窗口上叫做窗口标题,等等。Excel窗口的类名为XLMAIN,Excel滚动条的类名为NUIScrollbar。
那么有了以上的知识铺垫,我们就可以来获取Excel窗口的滚动条句柄了。以下是完整的代码,你可以直接复制它们到新的模块中使用: 运行GetScrollbarHwnd的过程代码,你会收到这样的信息提示,里面包含了Excel窗口的水平和垂直滚动条句柄: 
值得注意的是,以上代码不区分64/32位系统,晚间已经做好了适配哦。在WPS VBA中滚动条的句柄返回0,但Excel7返回正确句柄。
本期文章对应公众号关键词:074
点击下方名片,获取更多知识 带你揭开API函数的神秘面纱,掌握VBA那些未被人知的秘密
——推荐阅读—— VBA如何获取VBE编辑器的窗口句柄? 如何在公众号内发送关键词获取源码文件?
——学习交流—— 这里不仅有多种多样的知识文章 还有可以随时开聊的学习交流群 添加晚间的个人微信可以快速地拉你进群哦 一定要记得备注:进群 
一、了解两个Windows Api函数
二、了解窗口的基础信息
#If VBA7 And Win64 ThenPrivate xlMain As LongPtrPrivate xlDesk As LongPtrPrivate Excel7 As LongPtrPrivate ScrollbarH As LongPtrPrivate ScrollbarV As LongPtr#ElsePrivate xlMain As LongPrivate xlDesk As LongPrivate Excel7 As LongPrivate ScrollbarH As LongPrivate ScrollbarV As Long#End If#If VBA7 And Win64 ThenPrivate Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtrPrivate Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr#ElsePrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long#End IfPublic Sub GetScrollbarHwnd()xlMain = Application.hwndxlDesk = FindWindowEx(xlMain, Nuptr, "XLDESK", vbNullString)Excel7 = FindWindowEx(xlDesk, Nuptr, "EXCEL7", vbNullString)ScrollbarH = FindWindowEx(Excel7, Nuptr, "NUIScrollbar", "水平")ScrollbarV = FindWindowEx(Excel7, Nuptr, "NUIScrollbar", "垂直")MsgBox "已获取到Excel水平滚动条的句柄:" & ScrollbarH & ",垂直滚动条的句柄:" & ScrollbarV & "。", vbInformation, "LELEDY"End Sub


本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。