Đối tượng Workbook trong Excel VBA

Đối tượng Workbook trong Excel VBA là đối tượng đại diện cho một file Excel và là đối tượng chúng ta sẽ làm việc cùng khi muốn tự động hóa các thao tác liên quan đến Workbook như tạo Workbook mới, lưu Workbook, mở Workbook, đóng Workbook …

Cách tham chiếu đến đối tượng Workbook

Trong trường hợp bạn đang làm việc với nhiều Workbook trong một Instance của phần mềm Excel, bạn cần biết cách để tham chiếu chính xác đến Workbook bạn cần. Chúng ta có một số đối tượng để phân biệt như sau

Đối tượng ThisWorkbook

Đối tượng ThisWorkbook là một đối tượng thuộc loại Workbook, khi bạn gõ đoạn code sau vào cửa sổ Immediate (View > Immediate Window) thì cũng sẽ nhận được tên kiểu là Workbook:

?typename(ThisWorkbook)

ThisWorkbook trong trường hợp này là chính Workbook mà code VBA/Macro của bạn đang được thực thi.

Đối tượng ActiveWorkbook

Đối tượng ActiveWorkbook là một đối tượng thuộc loại Workbook, khi bạn gõ đoạn code sau vào cửa sổ Immediate (View > Immediate Window) thì cũng nhận được tên kiểu là Workbook:

?typename(ActiveWorkbook)

ActiveWorkbook là Workbook đang được người dùng chọn bằng chuột, đang ở phía trước các Workbook khác, đang có focus, hoặc là Workbook được gọi bởi phương thức Activate của đối tượng Workbook:

Tham chiếu tới Workbook bằng tên file Excel:

Set wb = Application.Workbooks("Book1.xlsx").Activate

Tham chiếu tới Workbook số thứ tự khi mở ra:

Set wb = Application.Workbooks(2).Activate

Và tất nhiên, bạn cũng có thể gọi Activate trên đối tượng ThisWorkbook

Set wb = ThisWorkbook.Activate

Tham chiếu tới Workbook trong VBA Excel

Vì Workbook là một đối tượng, nên khi khai báo biến và khởi tạo giá trị, chúng ta phải dùng từ khóa Set

Các cách để tham chiếu tới Workbook như sau:

' Tham chiếu tới ThisWorkbook 
Set wb1 = ThisWorkbook
' Tham chiếu tới ActiveWorkbook
 Set wb2 = ActiveWorkbook
' Mở Workbook tại đường dẫn và tham chiếu tới Workbook đó
 Set wb3 = Workbooks.Open("_đường_dẫn_tới_file_excel")
' Tham chiếu tới Workbook bằng số thứ tự
 Set wb4 = Workbooks(3)
' Tham chiếu tới Workbook bằng tên file Excel
 Set wb5 = Workbooks("Book1.xlsx")
' Tham chiếu tới Workbook mới được tạo ra
 Set wb6 = Workbooks.Add

Cách đóng Workbook trong VBA Excel

Sau khi đã tham chiếu và làm việc với Workbook, chúng ta có thể đóng Workbook bằng Code VBA. Để đóng Workbook, chúng ta gọi phương thức Close trên biến Workbook chúng ta đã tham chiếu tới. Ví dụ để đóng một Workbook và lưu lại những thay đổi đã được thực hiện trên Workbook đó, chúng ta code như sau:

Sub close_wb()
   Dim wb As Workbook
   Set wb = Workbooks.Open("C:\Book1.xlsx")
   wb.Close Savechanges:=True
End Sub

Để đóng một Workbook và không lưu bất kỳ thay đổi nào, bạn có thể dùng đoạn code như sau:

Sub close_wb()
   Dim wb As Workbook
   Set wb = Workbooks.Open("C:\Book1.xlsx")
   wb.Close Savechanges:=False
End Sub

Như vậy, với việc đóng Workbook, thì chúng ta có thể sử dụng thêm tham số Savechanges để có thể thực hiện lưu hoặc không lưu những thay đổi trên Workbook.

Cách mở một Workbooks trong VBA Excel

Để mở một Workbook trong VBA Excel, chúng ta có thể sử dụng phương thức Open như sau

Sub open_wb()
   Dim wb As Workbook
   Set wb = Workbooks.Open("C:\Book1.xlsx")
   ' Làm việc tiếp với đối tượng wb
End Sub

 Lưu Workbook với code VBA Excel

Để lưu một Workbook trong code VBA Excel thì chúng ta có một số phương thức hay sử dụng như sau

Lưu Workbook sử dụng phương thức save

Trong trường hợp bạn muốn lưu Workbook lại thường xuyên để đề phòng cho trường hợp mất điện, lưu những thay đổi trong khi làm việc, thì bạn có thể gọi phương thức save trên đối tượng Workbook như sau

Sub save_wb()
   Dim wb As Workbook
   Set wb = Workbooks.Open("C:\Book1.xlsx")
   wb.Save
End Sub

Lưu Workbook sử dụng phương thức SaveAs

Để lưu Workbook với một tên khác, vào một đường dẫn khác, thì chúng ta có thể gọi phương thức SaveAs trên đối tượng Workbook như sau:

Sub save_wb()
   Dim wb As Workbook
   Set wb = Workbooks.Open("C:\Book1.xlsx")
   wb.SaveAs Filename:="_đường_dẫn_\Tên_file.xlsx"
End Sub

Nếu kết hợp với việc tách dữ liệu từ một File ra nhiều file, thì trong khi chạy vòng lặp để tách dữ liệu, thì bạn sẽ cần gọi SaveAs và thay đổi đường dẫn tùy theo file Excel đang được tách ra. Nhưng để xử lý trường hợp này, bạn nên dùng phương thức SaveCopyAs như hướng dẫn ở đoạn ngay sau đây.

Lưu Workbook sử dụng phương thức SaveCopyAs

Một ứng dụng lý tưởng để sử dụng SaveCopyAs chúng ta có thể nghĩ tới là dùng để sao lưu dữ liệu, ví dụ bạn sẽ chạy đoạn code để sao lưu dữ liệu vào một thư mục và đặt tên cho bản sao lưu theo thời gian chẳng hạn

Sub save_wb()
   Dim wb As Workbook
   Set wb = Workbooks.Open("C:\Book1.xlsx")
   wb.SaveCopyAs Filename:="_đường_dẫn_\" & Format(Now,"hh_mm_ss") & "Tên_file.xlsx"
End Sub

Hi vọng là qua bài viết này Thanh đã chia sẻ tới các bạn những thao tác hay dùng nhất với đối tượng Workbook trong VBA Excel. Một phần lớn những kiến thức này sẽ trở nên hữu dụng khi bạn kết hợp với các kiến thức trong khóa học VBA cùng Thanh tại địa chỉ:

Khóa học VBA cơ bản:

Tự động hóa Excel với lập trình VBA cho người mới bắt đầu

Toàn bộ các khóa học lập trình VBA:

Tham khảo toàn bộ các khóa học lập trình VBA

 


Tác giả: dtnguyen (Nguyễn Đức Thanh)

@ Học Excel Online | DTNguyen.business
· · ·

Khóa học mới xuất bản