對工作簿進行操作(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

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