对工作簿进行操作(add、open、copy、save、close)

Add方法创建工作簿或工作表

1、Add方法创建新的工作簿

语法:workbooks对象.add(temple), 其中temple为参数可选

另外还可以指定工作簿中工作表数量,如:

Dim bbb As Workbook

Application.SheetsInNewWorkbook = 5

Set bbb = Workbooks.Add    

bbb.SaveAs fileName:="你好"

如果没有指定工作表数量,则默认创建空的工作簿

2、Add方法创建一个新工作表并使其成为活动工作表

语法:worksheets对象.Add(Before,After,Count,Type) , 所有参数均可选

说明

  • 参数Before和参数After只能二选一。

  • 参数Before指定一个工作表,新添加的工作表放置在该工作表之前。

  • 参数After指定一个工作表,新添加的工作表放置在该工作表之后。

  • 参数Count指定要添加的工作表数量,默认值为1。

    '在工作表最后插入3张工作表,多个参数要用逗号隔开
    Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=3
    '当前活动工作表名字改为newsheet
    ActiveSheet.Name = "newsheet"
  • 新添加的工作表成为活动工作表,因此使用Activesheet属性来返回当前工作表并使用Name属性来给工作表命名。

二、Delete方法删除工作簿或工作表

语法:工作表对象.delete

Sheets("sheet1").Select
ActiveWindow.SelectedSheets.Delete
'关闭警告消息
Application.DisplayAlerts = False
'遍历工作表并删除工作表名不是"newsheet"的工作表
For Each ws In Worksheets
If ws.Name <> "newsheet" Then ws.Delete
Next ws
'恢复警告消息
Application.DisplayAlerts = True
Dim bbb As Workbook
Dim ws As Worksheet

Application.SheetsInNewWorkbook = 5
Set bbb = Workbooks.Add
bbb.SaveAs fileName:="你好"
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "newsheet"

'Sheets("sheet1").Select
'ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = False

'关闭警告消息
Application.DisplayAlerts = False
'遍历工作表并删除工作表名不是"newsheet"的工作表
For Each ws In Worksheets
If ws.Name <> "newsheet" Then ws.Delete
Next ws
'恢复警告消息
Application.DisplayAlerts = True

Open方法

工作簿/表对象 . OpenFileName , UpdateLinks , ReadOnly , Format , Password , WriteResPassword ,

 IgnoreReadOnlyRecommended , Origin , Delimiter , Editable , Notify , Converter , AddToMru , Local , CorruptLoad )

参数说明:

具有很多参数,但大多数参数都很少用到。在这些参数中,除参数FileName必须外,其它参数都可选。
参数FileName指定要打开的工作簿文件的名称(特别注意!!这个参数不仅仅指工作簿的名称,还包括其路径!),参数UpdateLinks指定更新工作簿中链接的方式,参数ReadOnly用来设置是否以只读方式打开工作簿。如果需要使用密码来打开工作簿,则应该将参数Password设置为该密码;如果需要使用密码打开工作簿但没有指定密码,则会弹出询问密码的对话框。参数AddToMru指定是否将工作簿添加到最近使用的文件列表中,建议将其设置为True,默认值为False。

'应用示例4:以只读方式打开某工作簿
 

Sub openWorkbook2() 
Dim fname As String 
MsgBox "将D盘中的<测试.xls>工作簿以只读方式打开" 
fname = "D:\测试.xls" 
Workbooks.Open Filename:=fname, ReadOnly:=True 
End Sub 

Copy方法

 

对工作表进行操作


Dim wba As Workbook, wbc As Worksheet

'若下面两句set顺序互换则会出错,原因是ActiveWorkbook会变成新加的workbook,而新的workbook里没有“季度汇总”
'或者可以稳妥的加上如下语句: Windows("季报.xlsm").Activate

Set wbc = ActiveWorkbook.Worksheets("季度汇总")  

Set wba = Workbooks.Add

wbc.Copy before:=wba.Sheets(1)

表内数据的操作

'将数据表“季度汇总”中B2单元格复制到第二个sheet中的A1单元格内
Sheets("季度汇总").Range("B2").copy Sheets(2).Range("A1")

save方法

当前工作簿保存  save

ActiveWorkbook.Save

save as

语法:SaveAs_FileName_ , _FileFormat_ , _Password_ , _WriteResPassword_ , _ReadOnlyRecommended_ , _CreateBackup_ , _AccessMode_ , _ConflictResolution_ , _AddToMru_ , _TextCodepage_ , _TextVisualLayout_ , _Local_ )

其中以filename较为常用,注意filename可包含完整路径,如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中,因此

最好是把路径填写完整。

Dim wba As Workbook, Dim fname As String

Set wba = Workbooks.Add

wkfilename = "D:\Desktop\hello.xlsx"

wba.SaveAs filename:=wkfilename

 

close方法

语法:工作簿对象.Close(SaveChanges, Filename, RouteWorkbook)

三个参数均可选

SaveChanges:  用于在关闭工作簿前保存工作簿所发生的变化,如果工作簿没有变化,该参数将被忽略。如果工作簿显现在其它打开的窗口中,该参数也被忽略。如果工作簿发生了变化且没有显现在任何其它打开的窗口中,该参数将生效。如果SaveChanges的值为True,将存储该变化。如果参数SaveChanges的值为False,则工作簿所发生的变化不会被保存。最后,如果参数SaveChanges被忽略,Excel将显示一个对话框询问是否保存工作簿所发生的变化。

Filename:如果先前该工作簿没有保存过(没有文件名),那么将使用在参数FileName中所设置的名称,若用户没有填写该参数,Excel将提示用户输入一个文件名。简而言之,该方法的行为正如你所希望的。
 

RouteWorkbook:指出工作簿传送的问题 。

dim wb as workbook

wb.Close SaveChanges:=ture

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章