3 VBA代码如何切换word和excel

【分享成果 , 随喜正能量】人不能因为一件好事 , 高兴一整年 , 却能因为一个创伤,郁郁终生 。痛苦给人的刺激,总是远远大于快乐 。成年人的烦恼,和谁说都不合适,悲喜自渡,他人难悟 。人最强大的时候 , 不是坚持,而是放下 。这一生,各有各的渡口,努力努力 , 众生自渡 。?? 。
《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了 。这套教程定位于最高级,是学完初级,中级后的教程 。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容 。程序文件通过32位和64位两种OFFICE系统测试 。是非常抽象的,更具研究的价值 。
教程共两册,二十个专题 。今日分享内容是:VBA代码如何切换word和excel(3)

3 VBA代码如何切换word和excel

第二节 在word和excel两个应用程序间的激活操作

如我们的报告界面 , 当我们的界面继续往下进行,在第二个以及第三个按钮处我们要激活刚才打开的excel,这个按钮的代码该如何写呢?
3 VBA代码如何切换word和excel

代码讲解:上述代码在头部建立了引用API函数的声明 , 在代码中首先会查找excel程序,如果找到会将EXCEL置顶 。此程序将激活主EXCEL程序,并获得焦点,注意:如果打开VBA编辑器,此操作将无法正常工作 。如果打开VBA编辑器窗口 , 系统将设置焦点到那个窗口,而不是XLMAIN窗口 。此代码可以激活任何应用程序,只需更改myCLASS到应用程序主窗口的类 , 这里我给大家一些常见的OFFICE应用程序常见的类:
Excel 97、2000、2002、2003、2007、2013 为 XlMain
Word 97、2000、2002、2003、2007、2013 为OpusApp
Access 2000、2002、2003、2007、2013 为OMain
下面我们看看上述代码的详细讲解:
① Const MYCLASS = "XLMAIN"
获取主'Excel应用程序窗口的窗口句柄("XLMAIN") 。如果“正在运行Excel的多个实例”,您无法控制将检索哪个实例的HWnd 。
② XLHWnd = FindWindow(lpClassName:=MyCLASS, lpWindowName:=vbNullString)
在调用' FindWindow时,你必须使用vbNullString不是一个空字符串"" , 当调用API函数时,vbNullString和空字符串“”之间有区别 。
③ BringWindowToTop(HWnd:=XLHWnd) 将应用程序置顶
函数语法: BringWindowToTop(HWND hWnd);
函数功能:该函数将指定的窗口设置到Z序的顶部 。如果窗口为顶层窗口 , 则该窗口被激活;如果窗口为子窗口,则相应的顶级父窗口被激活 。
参数:hWnd: 设置到Z序的顶部的窗口句柄 。
返回值:如果函数成功,返回值为非零;如果函数失败 , 返回值为零 。若想获得更多错误信息,可以调用GetLastError函数 。
④ FindWindow用法
函数功能:该函数获得一个顶层窗口的句柄 , 该窗口的类名和窗口名与给定的字符串相匹配 。这个函数不查找子窗口 。在查找时不区分大小写 。
函数语法:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);
参数:IpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针 。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员 。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0 。
IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串 。如果该参数为空,则为所有窗口全匹配 。
返回值:如果函数成功 , 返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为NULL 。
这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题 。在搜索的时候不一定两者都知道,但至少要知道其中的一个 。有的窗口的标题是比较容易得到的,如"计算器",所以搜索时应使用标题进行搜索 。但有的软件的标题不是固定的,如"记事本",如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便 。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0 。
⑤关于句柄 , 句柄是整个Windows编程的基础 。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如 , 一个窗口,按钮 , 图标,滚动条,输出设备,控件或者文件等 。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针 , 程序不能利用句柄来直接阅读文件中的信息 。如果句柄不在I/O文件中,它是毫无用处的 。句柄是Windows用来标志应用程序中建立的或是使用的唯一整数 , Windows大量使用了句柄来标识对象 。
⑥ SetFocus HWnd:=XLHWnd
设置焦点 。
本节知识点回向:在本节中我们讲了如何做到在不同的应用程序间切换,主要利用了两种方案 , 一种是利用API函数,要查找到程序的局部然后置顶 , 一种是利用了AppActivate,这两种方法在应用上要注意测试 , 对于前者要注意所用的office是否合适于这种应用,后者要注意应用的稳定性 。本讲的知识点:
① AppActivate 如何应用 。
② FindWindow 和 SetFocus 如何应用 。
③ 上述两种应用的优缺点分析 。
④ 理解API函数声明与OFFICE版本的关系 。
本节代码参考文件“001 在WORD中激活EXCEL.docm”
3 VBA代码如何切换word和excel

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:


3 VBA代码如何切换word和excel

【3 VBA代码如何切换word和excel】【分享成果 , 随喜正能量】凡是经不起时光沉淀的生命喧嚣,都不算伤痛 , 更不算创伤,它就是像浮云片片,来了去了 , 如果你心大点,它既不是来也不是去,它就是一片风景 。。

相关经验推荐