首页 > 其他分享 >VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)

时间:2024-09-05 18:23:46浏览次数:12  
标签:ThisWorkbook VBA Sheet 代码 Modules 工作 Sheet1 模块

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

教程共两册,二十个专题。今日分享内容是:VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_VBA



【分享成果,随喜正能量】如果我们真的有在平时认真的去修行,随着我们的修行时间的变化我们自己的你相貌也会随之改变的,风度变了、仪态变了,会和从前大不一样的,在现代这个定义应该是体质的变化,你功夫越得力你会发现过去有些毛病,现在毛病没有了;从前精神常常提不起来,现在精神饱满、容光焕发。。

专题三VBA代码分类及如何利用代码自动关闭空闲文件

大家好,我们这讲开始一个新的专题,这个专题中我们首先讲解一下VBA代码应用的模块(module),然后介绍给大家如何利用VBA代码实现已经打开文件的自动关闭。

我们要知道,模块是代码的容器。所有代码必须写在模块中才能执行。可以将模块看做为一个文件,实际上,我们确实可以将模块导出为一个文本文件。在一个模块中,可以包含几个过程。对于一个小的工程,可以将所有代码放在一个模块中。而对于大的、复杂的项目,可以将代码写在几个模块中,以利于组织和修改。在执行代码时,过程在哪个模块中并不重要。来自一个模块的代码可以调用同一项目中任何其他模块中的代码(注意所调用的过程作用域不是私有的Private)。

另外,我们也可以将一个模块文件,其文件名扩展名为.bas,类模块文件,其文件名扩展名为.cls或.frm(用于用户窗体)通过从VBA编辑器的“文件”菜单中选择“导入”项,将该模块导入到项目中。那么在VBA中代码又是如何进行分类呢?一般来讲,按模块分,代码的可以有四种类型:标准模块代码;工作簿和工作表模块代码;用户窗体模块代码;类模块代码。这个专题我将主要给大家介绍标准模块代码;工作簿和工作表模块代码的知识。对于窗体模块涉及到的内容类似于上述两个部分不再讲解,对于类模块大家可以参考我的专门教程“VBA中类模块的解读及应用”。

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_文件名_02







第二节 工作簿和工作表模块代码Workbook And Sheet Modules

工作簿和工作表模块是直接绑定到工作簿对象和每个工作表对象的特殊模块。工作簿的模块称为ThisWorkbook,每个工作表模块的名称与其所属工作表的名称相同。这些模块应该包含对象的事件过程,仅此而已。如果将事件过程放在标准代码模块中,Excel将找不到它们,因此不会执行它们。如果将普通过程放在工作簿或工作表模块中,则在不完全限定引用的情况下无法调用它们。

1工作簿和工作表对象的名称的获得

工作簿和工作表模块有一个名为CodeName的属性,这是VBA内部了解对象的方式。默认情况下,工作簿代码名为ThisWorkbook,对于工作表,每个工作表模块都是Sheet1、Sheet2等,对于图表,则是Chart1、Chart2等。在VBA代码中可以像使用普通变量一样使用这些名称。例如:

Sub MYNZA()

MsgBox ThisWorkbook.Name

MsgBox Sheet1.Name

End Sub


代码运行结果:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_文件名_03


VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_重命名_04


这很有用,因此您可以始终引用工作表,例如,即使用户从Excel重命名工作表。例如,如果有一个名为“Sheet1”的工作表,则其名称和代码名都将为Sheet1。但如果用户将工作表重命名为MySheet,则代码

Msgbox Worksheets("Sheet1").Name

将失败,因为不再有名为Sheet1的工作表。但是,代码

Msgbox Sheet1.Name

将继续工作,因为VBA仍通过其代码名Sheet1知道该工作表。

2 工作簿和工作表对象的重命名

在上面的讲解中我们了解到:工作簿的模块称为ThisWorkbook,每个工作表模块的名称与其所属工作表的名称相同。那么是否可以更改这个名称呢?

可以更改ThisWorkbook或Sheet对象的代码名。若要更改模块的代码名,可在“项目资源管理器”窗口中选择该模块,然后打开“属性”窗口(F4或从“视图”菜单中),更改“名称”属性。这里需要注意一点如果在这些模块中已经有了代码之后再执行此操作,可能会遇到问题。下面结合两个例子来说明:


a 更改ThisWorkbook对象的代码名,这时ThisWorkbook将继续引用工作簿对象。例如,如果将ThisWorkbook对象的代码名更改为MyWorkbook,则以下两行代码都将工作:


Sub MYNZB()

'更改名称ThisWorkbook为MyWorkbook

MsgBox ThisWorkbook.Name

MsgBox MYWORKBOOK.Name

End Sub


代码截图:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_VBA_05



代码的运行:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_重命名_06


VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_重命名_07



b 如果将Sheet1对象的代码名更改为MySheet1,由于不再有代号为Sheet1的工作表对象,则以下代码将失败

Sub mynzc()

MsgBox Sheet1.Name

End Sub


代码截图:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_VBA_08



运行结果:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_VBA_09


c 此外,还可以使用VBA过程更改对象的代码名。例如:要将代码名为Sheet1的工作表的代码名更改为NewCodeName,请使用

ThisWorkbook.VBProject.VBComponents("Sheet1").Name= "NewCodeName"

要将MyWorkbook代码名改为NewWBName可以使用下面代码:

ThisWorkbook.VBProject.VBComponents("MyWorkbook").Name = "NewWBName"


全部代码如下:

Sub mynzd()

'ThisWorkbook.VBProject.VBComponents("Sheet1").Name = "NewCodeName"

ThisWorkbook.VBProject.VBComponents("NewCodeName").Name = "Sheet1"

End Sub


代码截图:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_重命名_10



运行结果:

VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_VBA_11


大家要注意上面的操作,可能会导致很多问题,所以除非我们事先知道自己在做什么,而且必须要做这种更改,否则不要进行这样的操作。

例如:当我们更改ThisWorkbook对象的代码名,下面的代码:

Msgbox ThisWorkbook.Name 将继续工作,但

Msgbox ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name

将失败,因为没有代码名为ThisWorkbook的对象,除非有一个ThisWorkbook的对象在对象浏览器中存在。




本节知识点回向:工作薄和工作表模块有什么特点?如何更改他们的名称?更改名称时要注意哪些问题?




本节内容详细代码“参考003工作表.XLSM”






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


VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_VBA_12




VBA信息获取与处理第三个专题第二节:工作簿和工作表模块代码(Workbook And Sheet Modules)_文件名_13













标签:ThisWorkbook,VBA,Sheet,代码,Modules,工作,Sheet1,模块
From: https://blog.51cto.com/u_16912668/11929764

相关文章

  • VBA中类的解读及应用第十五讲:利用类方法和事件,让文本框在激活时改变颜色(上)
    《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌......
  • Advanced Spreadsheets using Excel
    AdvancedSpreadsheets using ExcelSoftware: Microsoft ExcelIntroductiontoCourseThiscoursewill buildontheskillsyou have developed intheTerm 1 Spreadsheetscourse.Itwillextendyourproficiency using Excel, introducing yo......
  • VBA字典与数组第十八讲:VBA中静态数组的定义及创建
    《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容......
  • WPF communicate across different modules via event
    //Runtimeproject,cclasslibraryusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Linq.Expressions;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Input;namespaceRuntime{publicclassDelCmd:......
  • VBA数据库解决方案第十四讲:如何在数据库中动态删除和建立数据表
    《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64......
  • VBA代码解决方案第十七讲:如何选择一个工作表,如何选择多个工作表
    《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。这套教程共三册,一百四十七讲,内容覆......
  • VBA 匹配单元格中的E、N文本,替换写测试用例编号
    '匹配单元格中的E、N文本,替换写测试用例编号SubGetColumnBText()DimtextAsStringDimtargetNAsStringDimtargetEAsStringDimi,j,n,eAsIntegerDimpositionNAsIntegerDimpositionEAsIntegerDimwsAsWorksheetSetws=ThisWorkbook.Worksheets("she......
  • VBA语言専攻简介0831
    VBA语言専攻简介0831在当今世界,几乎没有任何工作是没有计算机的。有些工作需要定期重复相同的过程,最好将它们自动化。一旦任务自动化,只需单击一个按钮即可运行。VBA是实现自动化工作的最为简单的方式,它不需要其他工具,因为它已经与MicrosoftOffice软件集成。VBA是VisualBasicfor......
  • VBA技术资料MF195:屏蔽工作表中的粘贴输入
    我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解,从简单的入门、到入门后的提高、到数据库、到字典、到WordVBA的应用、到高级......
  • python Pandas合并(单元格、sheet、excel )
    如果你对Python感兴趣的话,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!安装Pandas和openpyxl首先,确保已经安装了Pandas和openpyxl。可以通过pip安装:pip install pandas openpyxl创建DataFrameimportpandasaspd#创建DataFramed......