Giảng viên cho mình hỏi chút: mình ứng dụng macro để làm việc theo mục đích yêu cầu của mình. Macro của mình là save as 1 file exel và có read only cho file mới
TUy nhiên nó xảy ra lỗi sau:
- Cách 1: mình ghi macro: Khi mình save as trên file nguồn thì lập tức file nguồn biến thành file đích. Mình không làm nữa mà làm cách 2
- Cách 2: minh ghi macro với các bước: copy sheet sang boock mới và save as / tool/General /read only (khai báo pass). Tuy nhiên cách này lại không đạt được mục đích là có read only (nghĩa là file vẫn mở và sửa đc bình thường chứ không phải là file read only.
- Mình chuyển sang làm cách 3: ghi macro với các bước như bước 2, nhưng không vào tool/General, mà thay vào đó mình vào sheet protection. Với cách nay, file đích đạt yêu cầu là protection. Nhưng file nguồn ban đầu lại bị lỗi. Mỗi lần mình bấm vào button save as, nó lại tạo ra 1 button khác, bấm save as 8 lần thì nó tạo ra 8 caais button (button 1 đến button 8).
Nhờ giảng viên hướng dẫn, giải đáp dùm mình các lỗi trên. Mình ưu tiên chọn cách 1 vì k phải qua bước copy/move sheets để tạo book mới.
Cám ơn nhiều ạ.
Với câu hỏi của bạn thì mình trả lời như sau:
1. Thao tác record macro không hiệu quả cho mục tiêu này. Vậy nên hãy bỏ qua việc ghi macro, bởi vấn đề này khá phức tạp.
2. Bạn tham khảo đoạn code mẫu dưới đây:
Sub Luu_Workbook_FileDialogSaveAs()
'Mở cửa sổ FileDialog SaveAs
With Application.FileDialog(msoFileDialogSaveAs)
.FilterIndex = 2
.Show
If .SelectedItems.Count > 0 Then 'Có file được chọn thì mới làm việc
ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
VBA.SetAttr .SelectedItems(1), vbReadOnly 'Lưu dưới dạng Read-Only cho file đích
Else 'Các trường hợp không có file được chọn
MsgBox ("No File Selected")
End If
End With
End Sub
Các đoạn ghi chú mình ghi tiếng việt cho bạn dễ hiểu, còn khi copy vào Module trong VBA có thể lỗi font nhé.
Đoạn code in đậm chính là đoạn code đưa file đích về chế độ read-only.
Ở đây làm việc thông qua tiến trình dùng VBA mở cửa sổ Save as, trong đó mặc định là lưu ra file mới ở dạng read-only. Bạn học đến chương 8 sẽ hiểu rõ hơn nội dung này. Tuy nhiên đây đã là 1 nội dung nâng cao hơn trong chương trình dạy rồi.
Cám ơn chuyên ak.