VBA代码如何切换word和excel(3)

【分享成果,随喜正能量】人不能因为一件好事,高兴一整年,却能因为一个创伤,郁郁终生。痛苦给人的刺激,总是远远大于快乐。成年人的烦恼,和谁说都不合适,悲喜自渡,他人难悟。人最强大的时候,不是坚持,而是放下。这一生,各有各的渡口,努力努力,众生自渡。

《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日分享内容是:VBA代码如何切换word和excel(3)

a39b94d8aec73ab5bd19dabf4ccb0110.jpeg

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

如我们的报告界面,当我们的界面继续往下进行,在第二个以及第三个按钮处我们要激活刚才打开的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”


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

 


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20598.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度图像Range Image

从点云创建深度图并显示 函数原型 RangeImage::createFromPointCloud (const PointCloudType& point_cloud, float angular_resolution, float max_angle_width, float max_angle_height, …

JVM 调优测试Jmeter 压测

Jmeter 内存不足了,修个5个线程吧 测试结果: Jmeter配置参数 5个线程,每个线程1秒跑1000次 测试串行吞吐量 -XX:PrintGCDetails -Xmx128M -Xms128M -XX:HeapDumpOnOutOfMemoryError -XX:UseSerialGC -XX:PermSize32M GC回收4次 吞吐量138…

菜鸡shader:L10 帧序列动画和极坐标的使用

文章目录 帧序列动画代码最后效果 极坐标代码最后效果 顶点色 这次笔记就直接放最后的效果了,因为课程上老师也没有给代码图片或是什么技巧说明。 下图左边是帧序列动画(鬼火),右边是极坐标。 帧序列动画 帧序列的原理是对一张有规律行列排序的序列帧…

Pyhon学习之条件判断和循环语句

1.if flag 1 if 1:print(type(True)) if 0:print(name) if flag:print("flag的类型:"str(type(flag)))根据这个结果,可以看出来,这里没有进行类型转换,bool就是int true 就是1 false 就是0 flag 0 if 1:print(type(…

ESP32连接云服务器【WebSocket】

ESP32连接云服务器【ESP32宝塔面板】 文章目录 ESP32连接云服务器【ESP32宝塔面板】👨‍🏫内容1:背景👨‍⚖️内容2:服务器配置👨‍💻内容3:ESP32配置 👨‍🏫…

C++教程——list容器、set容器、map容器

list容器 list构造函数 list赋值与交换 list大小操作 list插入和删除 list数据存取 list反转与排序 set/multiset容器 set大小和交换 set插入与删除 set查找和统计 set和multiset区别 pair对组创建 set容器排序:用仿函数改变默认排序方式 set容器排序,存…

Android :Activity生命周期

MainActivity .java import android.app.Activity; import android.os.Bundle; import android.util.Log; import java.util.function.LongToDoubleFunction; public class MainActivity extends Activity { //日志标记 private String TAG this.getClass().getSimpleNa…

【C#】并行编程实战:同步原语(2)

在第4章中讨论了并行编程的潜在问题,其中之一就是同步开销。当将工作分解为多个工作项并由任务处理时,就需要同步每个线程的结果。线程局部存储和分区局部存储,某种程度上可以解决同步问题。但是,当数据共享时,就需要用…

elasticsearch插件ik分词器,无法启动解决方案

首先7以后的版本一定要与es的版本保持一致下载包只能下载这个路径的文件,版本号与自己的es版本保持一致 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip这里可以直接替换 docker容器无法启动&…

Spark-用IDEA编写wordcount demo

配置 Spark版本&#xff1a;3.2.0 Scala版本&#xff1a;2.12.12 JDK&#xff1a;1.8 Maven&#xff1a;3.6.3 pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi&quo…

Coggle 30 Days of ML (23年7月)任务二:数据可视化

Coggle 30 Days of ML (23年7月&#xff09;任务二&#xff1a;数据可视化 任务二&#xff1a;对数据集字符进行可视化&#xff0c;统计标签和字符分布 说明&#xff1a;在这个任务中&#xff0c;需要使用Pandas库对数据集的字符进行可视化&#xff0c;并统计数据集中的标签和…

[PyTorch][chapter 44][时间序列表示方法4]

前言&#xff1a; 训练复杂度 OE*T*Q 参数 全称 E 迭代次数 Number of the training epochs T数据集大小 Number of the words in the training set Q 模型计算复杂度 Model computational complexity E,T 一般都认为相同&#xff0c;所以这里面主要讨论Q&#xff0c;模…