vba抓取网页数据(【分享成果,随喜正能量】第二节工作簿和工作表模块代码(WorkbookSheet))
优采云 发布时间: 2022-01-19 05:07vba抓取网页数据(【分享成果,随喜正能量】第二节工作簿和工作表模块代码(WorkbookSheet))
【分享成果,因正能量而欢欣鼓舞】善良是一种人格信仰、道德能量,也是这个世界上唯一一种无需沟通就能相互交流的精神。人生清明,心静在清明世界;一想到慈悲,心就凉;一想到善,生活就凉快;一想到平等,世界就凉了。态度决定环境的质量。为了不郁闷,先别着急。焦虑是一种心态,抑郁是一种疾病。
《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次改版。这套教程定位在最高级的水平。这是针对初学者和中级的教程。本教程将为大家讲解:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO对象的使用、获取工作表和文件夹信息、图形信息获取、自定义工作表信息功能等。程序文件在32位和64位OFFICE系统上测试。它非常抽象,具有更多的研究价值。
本课程由两卷八十四讲组成。今天的内容是主题2《VBA代码分类及如何使用代码自动关闭空闲文件》第二讲:工作簿中的代码和工作表模块中的代码
第 2 节 Workbook And Sheet Modules 代码(Workbook And Sheet Modules)
工作簿和工作表模块是直接绑定到工作簿对象和每个工作表对象的特殊模块。工作簿的模块称为ThisWorkbook,每个工作表模块与其所属的工作表同名。这些模块应该收录对象的事件过程,仅此而已。如果将事件过程放在标准代码模块中,Excel 将找不到它们,因此不会执行它们。如果您将正常过程放在工作簿或工作表模块中,则在不完全限定引用的情况下无法调用它们。
1 获取工作簿和工作表对象的名称
工作簿和工作表模块有一个名为 CodeName 的属性,这是 VBA 在内部理解对象的方式。默认情况下,工作簿代码命名为ThisWorkbook,每个工作表模块为工作表的Sheet1、Sheet2等,图表为Chart1、Chart2等。这些名称可以像普通变量一样在 VBA 代码中使用。例如:
子 MYNZA()
MsgBox ThisWorkbook.Name
消息框表1.名称
结束子
运行代码的结果:
这很有用,因此您始终可以参考工作表,例如,即使用户从 Excel 重命名工作表。例如,如果有一个名为“Sheet1”的工作表,则其名称和代码名称都是 Sheet1。但是如果用户将工作表重命名为 MySheet,则代码
Msgbox Worksheets("Sheet1").Name
将失败,因为不再有名为 Sheet1 的工作表。然而,代码
消息框表1.名称
将继续工作,因为 VBA 仍然通过其代号 Sheet1 知道工作表。
2 工作簿和工作表对象的重命名
在上面的解释中,我们了解到工作簿的模块叫做ThisWorkbook,每个工作表模块的名称和它所属的工作表的名字是一样的。那么这个名字可以改吗?
ThisWorkbook 或 Sheet 对象的代号可以更改。要更改模块的代码名称,请在 Project Explorer 窗口中选择模块,然后打开 Properties 窗口(F4 或从 View 菜单)并更改 Name 属性。这里要注意的一件事是,如果在这些模块中已有代码之后执行此操作,您可能会遇到问题。下面结合两个例子来说明:
a 更改 ThisWorkbook 对象的代号,然后 ThisWorkbook 将继续引用工作簿对象。例如,如果您将 ThisWorkbook 对象的代码名称更改为 MyWorkbook,则以下两行代码都将起作用:
子 MYNZB()
'将名称 ThisWorkbook 更改为 MyWorkbook
MsgBox ThisWorkbook.Name
MsgBox MyWorkbook.Name
结束子
代码截图:
运行代码:
b 如果Sheet1对象的代号改成MySheet1,下面的代码会失败,因为不再有代号为Sheet1的sheet对象
子 mynzc()
消息框表1.名称
结束子
运行结果:
c 此外,可以使用 VBA 过程更改对象的代码名称。示例:要将代号为 Sheet1 的工作表的代号更改为 NewCodeName,请使用
ThisWorkbook.VBProject.VBComponents("Sheet1").Name="NewCodeName"
要将 MyWorkbook 代码名称更改为 NewWBName,请使用以下代码:
ThisWorkbook.VBProject.VBComponents("MyWorkbook").Name = "NewWBName"
完整代码如下:
子 mynzd()
ThisWorkbook.VBProject.VBComponents("Sheet1").Name = "NewCodeName"
ThisWorkbook.VBProject.VBComponents("NewCodeName").Name = "Sheet1"
结束子
代码截图:
运行结果:
请注意,上述操作会导致很多问题,所以除非我们事先知道自己在做什么,否则不要这样做,并且必须进行此更改。
例如:当我们更改ThisWorkbook对象的代号时,如下代码:
Msgbox ThisWorkbook.Name 将继续工作,但
Msgbox ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name
将失败,因为没有名为 ThisWorkbook 的对象,除非对象浏览器中存在 ThisWorkbook 的对象。
回到本节知识点:工作簿和工作表模块有什么特点?如何更改他们的名字?改名需要注意什么?
本节详述代码“Reference 003 Worksheet.XLSM”
我20多年的VBA实践经验,全部浓缩在以下教程中,教程学习顺序:
① 7→1→3→2→6→5或7→4→3→2→6→5。
② 7→8
各套课程内容介绍:
第7套教程(共三册):《VBA的EXCEL应用》:VBA基础讲解
第一套教程(共三册):《VBA代码解决方案》:入门后的改进教程
第四套教程(16G):VBA代码解决视频(第一套视频讲解)
第三套教程(共两册):《VBA数组与字典解法》:数组与字典的特别讲解
第二套教程(共两册):《VBA数据库解决方案》:是对数据库的专门讲解
第六套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络和跨程序应用
第五套教程(两册):VBA中类的解释与利用:类与接口技术讲解
第8套教程(共三册):VBA的Word应用(最新教程):VBA在word中的使用