Đỗ Huyền
Đỗ Huyền
Thảo luận 2 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 152 lượt xem

mình ứng dụng macro để làm việc theo mục đích yêu cầu của

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 ạ.

Thảo luận 2 câu trả lời
Lượt xem 152 lượt xem
Vỗ tay vỗ tay
Đỗ Huyền 23:08 - Aug 02, 2021

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.

Vỗ tay vỗ tay
Đỗ Huyền 08:08 - Aug 17, 2021

Cám ơn chuyên ak.

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông