本帖最后由 hwc2ycy 于 2013-12-4 21:13 编辑
Workbook对象是Excel应用程序中当前打开的工作簿对象。 平时用Excel软件,就要打开工作簿,操作的工作表,单元格,图表,数据透视表,VBA工程,这些等等,都直接或间接的包含在工作簿对象中。
如何引用一个工作簿对象? Workbooks.open方法,通过新建引用。 示例: Sub Samp1() Dim wb As Workbook Set wb = Workbooks.Add End Sub
从工作簿集合中返回一个对象 Workbooks.item(index) 由于Item默认属性,此处的Item可省略。 Index 可以是某个工作簿对象在工作簿集合中的索引号 也可以是某个工作簿对象的名称(文件名,例如工作簿1.xlsm) Sub Samp2() Dim wb As Workbook Set wb = Workbooks(1) 'Set wb = Workbooks("工作簿1.xlsm") End Sub 当从一个集合中返回某个对象时,一定要注意传入的索引号或名称是否有效,否则会有下标越界的错误。
对象引用好后,就涉及到具体的属性和方法了,先讲讲工作簿对象的属性。
Workbook.Activesheet属性 返回一个对象,它代表活动工作簿中或指定的窗口或工作簿中的活动工作表(最上面的工作表)。
如果没有活动的工作表,则返回 Nothing。 如果不指定工作簿对象,则返回活动工作簿中的活动工作表。 示例:
MsgBox "当前活动工作表为 " &ActiveSheet.Name '通过消息框显示当前活动工作簿的活动工作表表名
Workbook.CodeName 属性 返回对象的代码名。String 型,只读。 在“属性”窗口中“(名称)”右边的单元格中显示的值是所选对象的代码名。
可以在设计过程中通过更改该值来改变对象的代码名。不能在运行过程中更改该属性。 对于一个返回指定对象的表达式,该表达式可使用对象的代码名。
例如,如果第一张工作表的代码名为 Sheet1,则下列表达式是等价的。 Worksheets(1).Range("a1") Sheet1.Range("a1") 工作表的名称可以与其代码名不同。
创建一张工作表时,其工作表名称和代码名是相同的,不过,更改工作表名称和代码名是不会相互影响的。
Workbook.FullName属性 返回指定工作簿对象的名称(以字符串表示),包括其磁盘路径。String 型,只读。 示例:
MsgBox ActiveWorkbook.FullName '通过消息框显示当前活动工作簿的完整文件名
Workbook.Path 属性: 返回一个 String 值,它代表应用程序的完整路径,不包括末尾的分隔符和应用程序名称。 示例:
MsgBox ActiveWorkbook.path '通过消息框显示当前活动工作簿的完整路径 注意当新建的工作簿没有保存时,该属性返回的是长度为0的字符串(空字符串)
Workbook.Saved属性
Boolean 类型,可读写。
如果指定工作簿从上次保存至今未发生过更改,则该属性值为 True。 如果指定工作簿有修改过但未保存,则该属性值为False。 如果要关闭某个已更改的工作簿,但又不想保存它或者不想出现保存提示,则可将此属性设为 True。 示例:
If Not ActiveWorkbook.Saved Then MsgBox "工作簿有修改,没有保存,请注意保存" End If
Workbook.Password 属性 String 类型,可读写。
返回或设置在打开指定工作簿时必须提供的密码。 示例:
Dim wb As Workbook Set wb = Workbooks.Open("d:\Password.xlsm") wb.Password = InputBox("Enter Password") wb.Closesavechanges:=True 注意:当工作簿内包含有宏表的时候,则无法设置Password属性。 在有密码保护的工作簿中,也无法插入宏表。 当用代码获取Password属性时,返回的是一串*号。
|