本帖最后由 hwc2ycy 于 2013-12-4 21:13 编辑
Workbooks对象是Excel应用程序中当前打开的所有Workbook对象的集合。
一、如何通过代码新建一个工作簿 Workbooks.add方法:返回的是一个代表新建的Workbook对象。
Add(Template) Template:可选参数。指定基于什么模板创建工作簿。 如果模板指定为现有的Excel文件,那么创建新工作簿时则以指定的Excel文件为模板
如果模板参数为一个常量,新工作簿内包含一个指定类型的工作表。
如果省略此参数,则创建包含一定数目空白工作表的新工作簿(数量可通过Application.SheetsInNewWorkbook指定)。
注意新建的工作簿自动成为当前的活动工作簿
Sub Samp() Dim wb As Workbook Workbooks.Add '新建一个工作簿 Workbooks.Add Template:=xlWBATChart '新建一个工作簿,指定了工作簿内包含的工作表类型为图表
Set wb = Workbooks.Add(Template:=xlWBATExcel4IntlMacroSheet) '新建一个工作簿,指定了工作簿内包含的工作表类型为宏表 'wb引用新建的工作簿对象
Application.SheetsInNewWorkbook = 5 'Excel 自动插入到新工作簿中的工作表数目 Workbooks.Add '新建一个工作簿,包含5个空白工作表 Application.SheetsInNewWorkbook = 3 End Sub
二、如何用代码关闭所有的打开的Workbook对象
Workbooks.Close 如果某个打开的工作簿有改动,Microsoft Excel 将显示询问是否保存更改的对话框和相应提示。 在使用该方法前,一定要记得先保存数据,万一误操作关闭了所有的文件,数据丢失后,可不能找我索赔。 Workbooks.close
三、如何用代码打开一个工作簿
Workbooks.open方法:一个代表打开的Workbook对象。 注意:打开的工作簿成为当前的活动工作簿。 Sub Samp2() Workbooks.Open Filename:="c:\1.xlsm" '打开c:\1.xlsm文件 '注意,当重复打开一个已经打开的EXCEL文件时,会有 End Sub
四、如何通过代码检测当前Excel中打开的工作簿数量 Workbooks.count 它代表集合中对象的数量。 Sub Samp3() MsgBox Workbooks.Count '通过消息框显示当前EXCEL应用程序中打开的工作簿数量 End Sub
其他属性和方法,更多的请参考VBA帮助,另外,多多敲代码,用得多了,自然就熟练了。 OpenDatabase 返回一个 Workbook 对象,该对象代表一个数据库。 OpenText 载入一个文本文件,并将其作为包含单个工作表的新工作簿进行分列处理,然后在此工作表中放入经过分列处理的文本文件数据。 OpenXML 打开一个 XML 数据文件。返回一个Workbook 对象。
示例 自定义函数 Sub Test() Dim strWorkbookname As String strWorkbookname = "工作簿12" MsgBox "工作簿 " & strWorkbookname & " 是否打开:"& WorkbookIsOpen1(strWorkbookname) MsgBox WorkbookIsOpen1("") MsgBox WorkbookIsOpen2("") End Sub
Function WorkbookIsOpen1(strWorkbookname AsString) As Boolean '检测是否有打开的指定的工作簿文件 '没有针对完整路径检测,不完美 '大家可以自己再完善下。 '方法一 Dim wb As Workbook Dim str As String str = LCase(strWorkbookname) '定义一个字符串变量,把传递的参数中的大写字母转换成小写字母并赋值给str
For Each wb In Workbooks If wb.Name = strWorkbookname Then WorkbookIsOpen1 = True Exit Function End If Next End Function
Function WorkbookIsOpen2(strWorkbookname AsString) As Boolean '检测是否有打开的指定的工作簿文件 '没有针对完整路径检测,不完美 '大家可以自己再完善下。 '方法二:利用错误处理 On Error Resume Next If Len(Workbooks(strWorkbookname).Name) = 0 Then WorkbookIsOpen2 = False '上面这句设置函数返回值可以省略 'Boolean类型的变量缺省值为False Else WorkbookIsOpen2 = True End If End Function
|