在 vba 中使用工作簿的指南

在 Excel 中,工作簿是所有 Excel 对象中最重要的对象之一,在编写 VBA 代码时了解如何使用和引用工作簿也是至关重要的。

在本教程中,我们将探讨您需要了解的所有内容。但是,您需要了解的第一件事是在 VBA 中处理工作簿所涉及的对象。

要知道的事情:

  • 活页夹对象
  • 活页夹对象

这两个对象听起来相同,但两者之间存在根本区别。

活页夹对象

在 VBA 中,Workbooks 对象表示在 Microsoft Excel 中打开的工作簿的集合。想象一下您同时打开十个文件柜。并且您想参考其中唯一的工作簿。在这种情况下,您必须使用工作簿对象通过其名称来引用此工作簿。

vba workbooks object

活页夹对象

在 VBA 中,工作簿对象代表当前在 Microsoft Excel 中打开的所有工作簿中的一个工作簿。理解这一点的最佳方法是考虑将变量声明为绑定器,您希望使用该变量来引用代码中的特定绑定器。

represents one single workbook

有用的链接添加“开发人员”选项卡| Visual Basic 编辑器|运行宏|个人宏工作簿

参考 VBA 中的工作簿

要在 VBA 中使用工作簿,您需要了解的第一件事是如何在宏中引用工作簿。令人高兴的是:有多种方法可以引用工作簿。未来,我们将逐一探索。

1.按名字

引用工作簿的最简单方法是通过其名称。假设您要激活工作簿Book1.xlsx,此时您需要使用的代码应如下:

refer to a workbook in vba by name

使用工作簿的名称引用工作簿非常简单,您需要指定名称,仅此而已。但您需要注意一件事:如果未保存工作簿,您只需使用名称即可。如果已注册,则必须使用该名称和扩展名。

2. 按数量

当您打开工作簿时,Excel 会为该工作簿分配一个索引号,您可以使用该编号来引用工作簿。您第一个打开的工作簿的索引号为“1”,第二个工作簿的索引号为“2”,依此类推。

refer to a workbook in vba b number

此方法对您来说可能不太真实,因为很难知道哪个工作簿位于哪个索引号上。但在一种情况下,此方法非常有用,那就是循环遍历所有打开的工作簿。

3. 通过本工作簿

此工作簿是一个属性,可帮助您引用在其中编写代码的工作簿。假设您在“Book1”中编写代码并使用 ThisWorkbook 保存工作簿。现在,即使您更改工作簿名称,也无需更改代码。

refer to a workbook in vba by this workbook

上面的代码计算工作簿中写入此代码的工作表的数量,并显示包含结果的消息框

4.通过ActiveWorkbook

如果要引用活动工作簿,则必须使用“ActiveWorkbook”属性。该属性的最佳用途是当您确定现在激活哪个工作簿时。或者您已经激活了要处理的工作簿。

by active workbook

上面的代码首先激活“Book1”工作簿,然后使用活动工作簿属性保存并关闭活动工作簿。

访问所有方法和属性

在 VBA 中,每当您引用一个对象时,VBA 都允许您访问该对象提供的属性和方法。同样,工作簿对象也带有属性和方法。要访问它,您必须首先定义工作簿,然后输入句点

define the workbook first and enter a dot

当您键入句点 (.) 时,它会显示属性和方法的列表。现在你肯定有一个问题,如何识别哪个是属性,哪个是方法。

这就是窍门。如果你仔细观察,你可以在列表中的每个名字前面看到一块移动的绿色砖块和一只灰色的手。因此,所有属性的名称前都有灰色的手,而方法的名称前都有移动的绿色砖块。

例如,将方法与工作簿一起使用

想象一下,您想要关闭一个工作簿(这是一种方法),您需要键入或从列表中选择“关闭”。

select close from a list

之后,您需要输入起始括号,以便 IntelliSense 知道您需要设置哪些参数。

enter starting parentheses

使用 close 方法,您需要定义三个参数,正如您所看到的,所有这些参数都是可选的,如果您愿意,您可以忽略它们。但有些方法没有参数(例如:activate)

例如,将属性与工作簿一起使用

想象一下,您想要计算“book1”工作簿的工作表数量。在这种情况下,您需要使用“Sheets”属性,然后使用它的附加计数属性。

use the sheets property

在上面的代码中,正如我所说,您设置了 book1,然后工作表属性引用所有工作表,然后使用计数属性来对它们进行计数。当您运行此代码时,它会显示一个包含结果的消息框。

在工作簿中使用“WITH”语句

在 VBA 中,有一个“With”语句可以帮助您在高效编写宏的同时处理工作簿。让我们看一下下面的示例,其中同一工作簿(即 ActiveWorkbook)具有三行不同的代码。

using with statement with workbook

使用“WITH”语句,您只能引用活动工作簿一次,并使用代码中拥有的所有属性和方法。

  • 首先,您需要以“With ActiveWorkbook”开始语句并以“End With”结束语句。
start with the starting statement
  • 之后,您需要在上面示例中的这条语句之间编写代码。
write the code between the statement

正如您在上面的代码中看到的,我们已经使用WITH语句引用了ActiveWorkbook,然后应该使用所有属性和方法。

 Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub

让我给你一个简单而具体的例子,让你明白一切。想象一下,你让我去 215 房间拿水瓶,当我回来时,你又让我去 215 房间拿笔,然后又让我去 215 房间拿笔记本电脑。现在事情是这样的:你告诉我要拿的所有东西都在 215 房间里。如果你把我送到 215 房间并告诉我同时拿走所有三件东西,那就更好了。

阅读:以 – 结尾

将变量声明为工作簿

有时您需要将变量声明为绑定器以便在代码中进一步使用它。嗯,它不需要你做任何特别的事情。

declare variable as workbook
  1. 使用 DIM(声明)语句。
  2. 写出变量名。
  3. 将变量类型设置为工作簿。

处理错误

在 VBA 中使用一个或多个工作簿对象时,您可能还需要处理错误。让我们以“运行时错误 9:索引超出范围”错误为例。出现此错误的原因有多种。

  • 您尝试引用的工作簿未打开。
  • 也许你把名字拼错了。
  • 您引用的工作簿尚未保存,并且您正在使用具有该名称的扩展名。
  • 如果您使用索引号来引用工作簿,并且您使用的索引号大于打开的工作簿的总数。

添加评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注