Khóa chế độ Design Mode

Liên hệ QC

ly_hieu_thuan

Thành viên mới
Tham gia
11/1/08
Bài viết
15
Được thích
6
Nghề nghiệp
Office Manager
Chào các bạn ạ!
Xin thông cảm cho kẻ học "chế xe đạp" này nha, hỏi nhiều chuyện quá! Như thế này:

Khi mình bảo mật code VBA bằng Tool\VBA Project Properties...\.... đặt PW thì chỉ bảo mật được code thôi, nhưng khi nhấn nút Design Mode thì các code đó cũng vô hiệu ở những sự kiện như là Wsheet Selection Change, wsheet active,...

Ý mình muốn tắt hẳn luôn chế độ Design Mode, không cho người sử dụng vô tình hay cố ý làm việc ở chế độ này thì làm sao ạ!

Xin cảm ơn trước!
 
Chào các bạn ạ!
Xin thông cảm cho kẻ học "chế xe đạp" này nha, hỏi nhiều chuyện quá! Như thế này:

Khi mình bảo mật code VBA bằng Tool\VBA Project Properties...\.... đặt PW thì chỉ bảo mật được code thôi, nhưng khi nhấn nút Design Mode thì các code đó cũng vô hiệu ở những sự kiện như là Wsheet Selection Change, wsheet active,...

Ý mình muốn tắt hẳn luôn chế độ Design Mode, không cho người sử dụng vô tình hay cố ý làm việc ở chế độ này thì làm sao ạ!

Xin cảm ơn trước!
Bạn chạy code này nè

Mã:
Sub Dong()
On Error Resume Next
Application.CommandBars.FindControl(ID:=1605).Enabled = False
Application.CommandBars.FindControl(ID:=2597).Enabled = False
End Sub

Mở thì bạn thay False thành True
 
Lần chỉnh sửa cuối:
Upvote 0
Hoặc bạn cũng có thể chạy code sau:

Mã:
Sub Dong()
On Error Resume Next
Application.CommandBars("Visual Basic").Enabled = False
Application.CommandBars("Control Toolbox").Enabled = False
Application.CommandBars("Exit Design Mode").Enabled = False
Application.CommandBars("Design Mode").Enabled = False
End Sub

Để Mở lại thì bạn thay False thành True

Bạn lưu ý là code trên chỉ sử dụng được khi bạn sử dụng office phiên bản tiếng Anh.
Nếu bạn muốn chạy cho tất cả thì bạn phải thay thế chúng bằng ID nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các bạn ạ!
Xin thông cảm cho kẻ học "chế xe đạp" này nha, hỏi nhiều chuyện quá! Như thế này:

Khi mình bảo mật code VBA bằng Tool\VBA Project Properties...\.... đặt PW thì chỉ bảo mật được code thôi, nhưng khi nhấn nút Design Mode thì các code đó cũng vô hiệu ở những sự kiện như là Wsheet Selection Change, wsheet active,...

Ý mình muốn tắt hẳn luôn chế độ Design Mode, không cho người sử dụng vô tình hay cố ý làm việc ở chế độ này thì làm sao ạ!

Xin cảm ơn trước!
Cho dù bạn vô hiệu hóa được nút Design mod, nhưng nếu người dùng Disable macro thì sao? (mà thường thì khi macro bị Disable thì nó cũng đang ở chế độ Design mode đấy)
Có phải vô bổ không?
Theo tôi, bạn viết code như thế nào đấy để nếu như người dùng Disable macro thì sẽ không xài được các tính năng cao cấp (do bạn viết)... Và khi ấy phần thiệt thuộc về họ ---> Thế thì họ sẽ ý thức ngay (trừ phi code của bạn quá tệ và họ muốn xóa luôn thì lại là chuyện khác)
 
Upvote 0
@domfootwear: Xin cảm ơn bạn domfootwear! Mình sẽ thử nghiệm hai cách của bạn. Nhưng cho mình hỏi thông số ID của cách 1 có ý nghĩa gì vậy? Mình thấy cách 2 thì dễ hiểu hơn ấy. Sub Dong() mình đặt khi even nào bạn nhỉ? Mình sẽ thử nghiệm hai cách và cảm ơn bạn lần nữa! Vậy ha!

@ndu96081631: Ý mình muốn hạn chế việc vô tình hay cố ý làm việc ở chế độ Design Mode, còn dùng Disable macro thì nói thật từ trước đến giờ mình chưa từng biết. ndu96081631 có thể giải thích cho mình rỏ hơn không ạ? Nếu vậy thì mình phải làm sao trong trường hợp này!
 
Lần chỉnh sửa cuối:
Upvote 0
@domfootwear: Xin cảm ơn bạn domfootwear! Mình sẽ thử nghiệm hai cách của bạn. Nhưng cho mình hỏi thông số ID của cách 1 có ý nghĩa gì vậy? Mình thấy cách 2 thì dễ hiểu hơn ấy. Sub Dong() mình đặt khi even nào bạn nhỉ? Mình sẽ thử nghiệm hai cách và cảm ơn bạn lần nữa! Vậy ha!

@ndu96081631: Ý mình muốn hạn chế việc vô tình hay cố ý làm việc ở chế độ Design Mode, còn dùng Disable macro thì nói thật từ trước đến giờ mình chưa từng biết. ndu96081631 có thể giải thích cho mình rỏ hơn không ạ? Nếu vậy thì mình phải làm sao trong trường hợp này!
Bạn viết VBA mà không biết Disable macro là gì à? Dịch ra tiếng Việt cũng hiểu mà. Là vô hiệu hóa tất cả các macro có trong file đó.
Bạn hỏi làm sao? Thì kệ họ chứ làm gì được họ:-=
 
Upvote 0
thông số ID của cách 1 có ý nghĩa gì vậy?
Như mình đã nói ở bài #3 là giả sử bạn dùng office tiếng Việt hoặc tiếng Hàn ... hay tiếng gì gì đó thì nó đâu biết cái "Control Toolbox" hay cái gì đó đâu mà "rờ":-= do vậy để sử dụng cái chung cho tất cả các phiên bản bạn nên thay thế ngôn ngữ sang mã số.
Bạn có thể tham khảo các ID của nó ở trang sau nhé.

http://support.microsoft.com/kb/213552
 
Upvote 0
Bạn viết VBA mà không biết Disable macro là gì à? Dịch ra tiếng Việt cũng hiểu mà. Là vô hiệu hóa tất cả các macro có trong file đó.
Bạn hỏi làm sao? Thì kệ họ chứ làm gì được họ:-=

Dĩ nhiên mình hiểu là vô hiệu hóa macro rồi bạn ạ, nhưng thật tình mình không biết ngoài chế độ Design Mode còn có một chế độ khác có thể vô hiệu hóa macro được(hay hai là một vậy). Thật tình mình cần sự giúp đỡ! Mong các bác hiểu rõ và giải thích dùm mình. Bể học vô bờ bến mong đừng dấu dím!
 
Upvote 0
Dĩ nhiên mình hiểu là vô hiệu hóa macro rồi bạn ạ, nhưng thật tình mình không biết ngoài chế độ Design Mode còn có một chế độ khác có thể vô hiệu hóa macro được(hay hai là một vậy). Thật tình mình cần sự giúp đỡ! Mong các bác hiểu rõ và giải thích dùm mình. Bể học vô bờ bến mong đừng dấu dím!
Design Mode là "chế độ thiết kế". Chức năng của nó không phải là vô hiệu hóa Macro mà là tạm dừng các hoạt động của Macro để công việc thiết kế được dễ dàng, tránh trường hợp các Macro sẽ làm ảnh hưởng đến công việc thiết kế của bạn. Nếu bạn vô hiệu hóa Macro bằng cách này thì... nguy hiểm. Với những Virus hoạt động dựa vào sự kiện Workbook_Open() thì bạn không làm gì được, vì khi bạn mởi file lên nó đã hoạt động rồi. Disable Macro thì khác. Vô hiệu hóa tất cả từ lúc mở file.
 
Upvote 0
Đây là code dựa vào 1 file để mở 1 file nào đó mà file muốn mở bị vô hiệu hóa Macro.
Bạn xem code nhe.

Mã:
Sub MoFileVoHieuHoaMacro()
On Error Resume Next
Dim i As Integer
Dim Tudong As MsoAutomationSecurity
Tudong = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
With Application.FileDialog(msoFileDialogOpen)
.Show
For i = 1 To .SelectedItems.Count
MsgBox .SelectedItems(i)
Workbooks.Open .SelectedItems(i)
Next i
End With
Application.AutomationSecurity = Tudong
End Sub
 
Upvote 0
Hong biết ông nào hay quá làm mình cóp py "Sub Dong()
On Error Resume NextApplication.CommandBars("Visual Basic").Enabled = FalseApplication.CommandBars("Control Toolbox").Enabled = FalseApplication.CommandBars("Exit Design Mode").Enabled = FalseApplication.CommandBars("Design Mode").Enabled = FalseEnd Sub" dán vào thì hic trời ơi lỗi như file đã đưa làm phải cài lại cái office. Không thể nào on/off chức năng disign mode. rồi làm sao mà hả thiết kế các macro tiếp theo. Hic hic hic
 
Upvote 0
View attachment 241484
Bài đã được tự động gộp:

Chào chào a/c all.
có thết cho mình hỏi lỗi như trên hình là gì không?
Trân trọng cảm ơn nhiều!
1595238611887.png
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom