06/04/2021, 14:51

Hơn 20 cách Save File bằng VBA Code cực kì đơn giản - ự học Excel VBA

Trong bài này mình sẽ đưa ra 20 cách lưu file (Save File) bằng lệnh VBA, phương pháp này thường dùng để thay thế cho cách làm thủ công, đó là nhấn phím tắt Ctrt + S hoặc click File -> Save. Để tránh trường hợp người dùng quên lưu lại nội dung các file Excel đã mở thì ta sẽ sử dụng hai lệnh ...

Trong bài này mình sẽ đưa ra 20 cách lưu file (Save File) bằng lệnh VBA, phương pháp này thường dùng để thay thế cho cách làm thủ công, đó là nhấn phím tắt Ctrt + S hoặc click File -> Save.

Để tránh trường hợp người dùng quên lưu lại nội dung các file Excel đã mở thì ta sẽ sử dụng hai lệnh Save SaveAs trong VBA để lưu tự động.

Cũng có một số trường hợp bạn code VBA và cần mở một file nào đó để lấy nội dung, sau đó sửa nội dung và lưu file lại. Nếu để người dùng làm bằng tay thì có khả năng bị sai, vì vậy ta dùng code sẽ an toàn và chính xác hơn.

1. Lệnh Save trong VBA

Lệnh Save trong VBA sẽ lưu file Excel tương tự như cách nhấp vào biểu tượng Save hoặc sử dụng phím tắt Lưu (CTRL + S).

Lưu một file

Đây là cách lưu đơn giản và thường được sử dụng nhất. Ta sẽ truyền vào tên của file cần lưu.

Workbooks("savefile.xlsm").save

Lưu file đang active

Dành cho trường hợp bạn đang mở nhiều file.

ActiveWorkbook.save

Lưu tất cả file đang mở

Dim wb as workbook
    For Each wb In Application.Workbooks
	wb.Save
Next wb

Lưu các file ở trạng thái ReadOnly

File ở trạng thái ReadOnly là những file bạn đã mở nhưng không làm việc.

Dim wb as workbook

For Each wb In Application.Workbooks
	If not wb ReadOnly then
		wb.Save
	End if
Next wb

Lưu file được lưu bởi một biến

Dim wb as workbook

set wb = workbooks("savefile.xlsm")
wb.save

Lưu file được lưu tên trong chuỗi

Dim wbstring as string

wbstring = "savefile.xlsm"
workbooks(wbstring).save

Lưu file theo thứ tự mở file

workbooks(1).save

Lưu file với tên file nằm trong một cell nào đó

Dim wbstring as string

wbstring = activeworkbook.sheets("sheet1").range("wb_save").value
workbooks(wbstring).save

2. Lệnh Save As trong VBA

Save As là tính năng lưu vào một file mới, còn Save là lưu ghi đè trên file đã lưu.

Lệnh này có công dụng giống như việc thao tác trên menu File -> Save As của Excel.

Cách dùng thì không khác gì so với lệnh Save, có điều bạn phải truyền thêm tham số tên file cần lưu.

Cú pháp như sau:

Object.SaveAs(FileName, FileFormat, Password, WriteResPassword, _
ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, _
AddToMru,TextCodepage, TextVisualLayout, Local)

Mình sẽ không giải thích các tham số, thay vào đó sẽ tìm hiểu thông qua những ví dụ dưới đây.

Save As trên cùng thư mục

ActiveWorkbook.SaveAs Filename:= "new"

' Hoặc

ActiveWorkbook.SaveAs "new"

' Hoặc

Dim wbstring as string

wbstring = "new"
ActiveWorkbook.SaveAs Filename:= wbstring

Save As ở thư mục mới

ActiveWorkbook.SaveAs Filename:= "C:
ew"

' Hoặc

Dim wbstring as string

wbstring = "C:
ew"
ActiveWorkbook.SaveAs Filename:= wbstring=

Save As ở thư mục mới có chọn đuôi mở rộng

ActiveWorkbook.SaveAs Filename:= "C:
ew.xlsx"

' Hoặc

Dim wbstring as string

wbstring = "C:
ew.xlsx"
ActiveWorkbook.SaveAs Filename:= wbstring

Bạn cũng có thể sử dụng kết hợp File Format để chỉ định dạng của file.

.xlsx = 51 '(52 for Mac)
.xlsm = 52 '(53 for Mac)
.xlsb = 50 '(51 for Mac)
.xls = 56 '(57 for Mac)

Ví dụ: Lưu dưới dạng mở rộng .xlsx trên Windows

ActiveWorkbook.SaveAs Filename:= "C:
ew", FileFormat:= 51

Save As và đặt mật khẩu mở file

ActiveWorkbook.SaveAs Filename:= "C:
ew.xlsx", Password:= "password"

Save As và đặt mật khẩu ghi file

Nếu mật khẩu bạn nhập để mở file không đúng thì nó sẽ chuyển sang chế độ Read Only.

ActiveWorkbook.SaveAs Filename:= "C:
ew.xlsx", WriteRes:= "password"

Save As chế độ read only

ActiveWorkbook.SaveAs Filename:= "C:
ew.xlsx", ReadOnlyRecommended:= TRUE

3. Một vài ví dụ về Save File khác trong VBA

Tạo hộp thoại Save As

Application.GetSaveAsFilename

Tạo hộp thoại Save As kèm tên file mặc định

Application.GetSaveAsFilename InitialFilename:="test.xlsx"

Tạo và lưu file mới

Dim wb As Workbook

Set wb = Workbooks.Add
Application.DisplayAlerts = False
wb.SaveAs Filename:=”c:Test1.xlsx”
Application.DisplayAlerts = True

Xóa cảnh báo khi save

Khi bạn làm việc với tính năng Save trong VBA, bạn có thể gặp nhiều cảnh báo hoặc Lời nhắc khi lưu. Để tắt những điều này thì hãy thêm dòng mã này:

Application.DisplayAlerts=False

Mở lại sẽ là:

Application.DisplayAlerts=True

Trên là tập hợp hơn 20 trường hợp Save File Excel bằng VBA code. Đây là nội dung mình sưu tầm lại ở các trang nước ngoài trên mạng.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0