PDA

View Full Version : Vô hiệu hóa nút "Disable Macros" trong Excel



Duong gia
05-11-07, 03:10 PM
Bạn nào giỏi VBA cho mình học hỏi với. Có cách nào vô hiệu hóa nút "Disable Macros" khi mở file Excel có macro không? Tức là mình muốn khi mở file Excel có macros buột họ phải click vào "Enable macros" thôi chứ không có nút "Disable Macros" .
Thanks in advance.

DOSNET
05-11-07, 03:20 PM
Sao các bác toàn động đến mã nguồn của bác Bill như thế...

Duong gia
05-11-07, 03:30 PM
Mình mất nhiều thời gian online để tìm các code vô hiệu hóa nút "Disable macro" nhưng tìm mãi không có, nên phải lên diễn đàn nhờ giúp đỡ. Thanks

vungoc
05-11-07, 04:33 PM
Bác Duyệt có giới thiệu 1 bài về cách vô hiệu chức năng Disabled macros nhưng phải thông qua trung gian VB6.

Mình cũng đang cần cái vụ này - các cao thủ xem có cách nào không !?
(Hy vọng mong manh !)

Thân ái !

Duong gia
05-11-07, 04:57 PM
Có còn hơn không, bạn VuNgoc bạn làm ơn share cho minh xem bài của Bác Duyệt về cách vô hiệu chức năng Disabled macros bằng VB6.0 xem có thể dùng được không, cám ơn bạn. Địa chỉ email của mình là :
duongnguyen220372@yahoo.com.vn

Thanks in advance

chibi
05-11-07, 06:40 PM
Có còn hơn không, bạn VuNgoc bạn làm ơn share cho minh xem bài của Bác Duyệt về cách vô hiệu chức năng Disabled macros bằng VB6.0 xem có thể dùng được không, cám ơn bạn.
Thanks in advance
Trả lời hộ bác VUNGOC nhé: Hình như đây (http://www.giaiphapexcel.com/forum/showpost.php?p=37691&postcount=10)

Duong gia
06-11-07, 08:41 AM
Disable "Disable macros" button bằng VB6.0 theo cách của bác Duyệt thì đâu có ổn, mình đã xem qua rồi. Mình không thể bắt buột người sử dụng muốn mở file Excel thì phải thông qua nó. Phức tạp quá, chác chắn người dùng sẽ click mở trực tiếp file Excel mà không thông qua con đường của bác Duyệt.
Hy vọng một ngày đẹp trời sẽ gặp được Cao thủ VBA Excel (Hy vọng, nhưng quá mong manh)

Nguyễn Duy Tuân
06-11-07, 10:00 AM
Nếu xuất hiện form thông báo "Security Warning" chọn Disable/Enable Macros có nghĩa là trong Excel, Security đang ở chế độ "Medium".

Mình gửi file .reg sẽ tự đặt Security = "Low" . Chế độ "Low" cho phép chạy macros và không hiện mảng thông báo "Security Warning" nữa.

vungoc
06-11-07, 10:09 AM
Cảm ơn bác TuanVNUNI nhiều.
Có cách nào gắn đoạn code trên vào luôn file Excel nào đó mà mình muốn mở không.
Nghĩa là khi kích hoạt mở 1 file nào đó, ví dụ: file QUAN LY PHU TUNG chẳng hạn, thì ở bất kỳ máy nào cũng có thể tự chọn chế độ đặt Security = "Low" . Chế độ "Low" cho phép chạy macros và không hiện mảng thông báo "Security Warning" mà không cần phải chạy riêng file SetEnableMacros không ạ !
(Vì nó đã được chạy cùng với khi kích hoạt mở file QUAN LY PHU TUNG)
Cảm ơn bác rất nhiều.
Chúc bác luôn mạnh khỏe và zui zẻ !

Nguyễn Duy Tuân
06-11-07, 10:20 AM
Cảm ơn bác TuanVNUNI nhiều.
Có cách nào gắn đoạn code trên vào luôn file Excel nào đó mà mình muốn mở không.
Nghĩa là khi kích hoạt mở 1 file nào đó, ví dụ: file QUAN LY PHU TUNG chẳng hạn, thì ở bất kỳ máy nào cũng có thể tự chọn chế độ đặt Security = "Low" . Chế độ "Low" cho phép chạy macros và không hiện mảng thông báo "Security Warning" mà không cần phải chạy riêng file SetEnableMacros không ạ !
(Vì nó đã được chạy cùng với khi kích hoạt mở file QUAN LY PHU TUNG)
Cảm ơn bác rất nhiều.
Chúc bác luôn mạnh khỏe và zui zẻ !

Không thể làm theo ý Vungoc được đâu vì file .xls (Excel files) chịu sự quản lý của EXCEL.EXE - Excel Application, nên dừ gắn đủ thứ lên file Excel thì vẫn thế thôi. Nên chỉ có cách là tác động từ bên ngoài vào EXCEL.EXE thông qua file.reg ( đánh thẳng vào trung tâm --=0 ).

Đối với một chương trình mà muốn gửi cho nhiều người dùng thì nên tạo bộ cài đặt, trong bộ cài đặt mình cho chạy các lệnh trong file.reg.

Nếu Mr Vungoc muốn tạo bộ cài đặt thì có thể dùng 2 thằng là: Factory Setup hoặc InnoSetup (cái này là free mà rất hay, tớ hay dùng cái này).

vungoc
06-11-07, 10:31 AM
Không thể làm theo ý Vungoc được đâu vì file .xls (Excel files) chịu sự quản lý của EXCEL.EXE - Excel Application, nên dừ gắn đủ thứ lên file Excel thì vẫn thế thôi. Nên chỉ có cách là tác động từ bên ngoài vào EXCEL.EXE thông qua file.reg ( đánh thẳng vào trung tâm --=0 ).

Đối với một chương trình mà muốn gửi cho nhiều người dùng thì nên tạo bộ cài đặt, trong bộ cài đặt mình cho chạy các lệnh trong file.reg.

Nếu Mr Vungoc muốn tạo bộ cài đặt thì có thể dùng 2 thằng là: Factory Setup hoặc InnoSetup (cái này là free mà rất hay, tớ hay dùng cái này).

Đây cũng là một ý kiến hay / Xin cảm ơn !

Duong gia
06-11-07, 10:50 AM
Mình rất tán thành ý kiến của bác VuNgoc. Mình có ý này, Nếu enable thì tại A1 của sheet1 sẽ bằng 1, rồi mình tạo 1 file Add-ins thực hiện như sau: nó sẽ kiểm tra tất cả các sheet1 của tất cả các file excel đang mở, nếu mà tại A1 của sheet1 của file nào mà bằng 1 thì ngay lập tức đóng file đó lại. Có như vậy thì bắt buột người dùng phải chọn Enable macros. Để tránh người dùng loại bỏ file Add-ins trên ta nên disable Add-ins trong Tools của Excel lại.
Không biết ý này có khả thi không ? Nhờ các bác góp ý cho. Thanks

Nguyễn Duy Tuân
06-11-07, 11:04 AM
Mình rất tán thành ý kiến của bác VuNgoc. Mình có ý này, Nếu enable thì tại A1 của sheet1 sẽ bằng 1, rồi mình tạo 1 file Add-ins thực hiện như sau: nó sẽ kiểm tra tất cả các sheet1 của tất cả các file excel đang mở, nếu mà tại A1 của sheet1 của file nào mà bằng 1 thì ngay lập tức đóng file đó lại. Có như vậy thì bắt buột người dùng phải chọn Enable macros. Để tránh người dùng loại bỏ file Add-ins trên ta nên disable Add-ins trong Tools của Excel lại.
Không biết ý này có khả thi không ? Nhờ các bác góp ý cho. Thanks

Bạn cần gì phải làm máy móc thế. Nếu người ta muốn gỡ bỏ Addin thì thì thiếu gì cách.

anhtuan1066
06-11-07, 11:09 AM
Nguyên tắc có cài dc thì có gỡ ra dc... Bất kể nó dc bảo mật đến cở nào... ha.. ha.. Tầm cở như các chuyên gia của MS mà còn phải khốn đốn trước nhưng tay cracker đấy thôi...

digita
06-11-07, 12:10 PM
Nếu xuất hiện form thông báo "Security Warning" chọn Disable/Enable Macros có nghĩa là trong Excel, Security đang ở chế độ "Medium".

Mình gửi file .reg sẽ tự đặt Security = "Low" . Chế độ "Low" cho phép chạy macros và không hiện mảng thông báo "Security Warning" nữa.

Khi đặc cái này qua registy thì XL có cái setting security = low nên cho phép chạy các code trong workbook đang hiện hành.

Tôi chưa thữ code vì không biết là khi cài nó xong còn có thể sửa security setting qua mức medium để có câu hỏi muốn enable macro hay không. Tôi không muốn mất luôn tính năng tắt macro.

Nguyễn Duy Tuân
06-11-07, 12:30 PM
Khi đặc cái này qua registy thì XL có cái setting security = low nên cho phép chạy các code trong workbook đang hiện hành.

Tôi chưa thữ code vì không biết là khi cài nó xong còn có thể sửa security setting qua mức medium để có câu hỏi muốn enable macro hay không. Tôi không muốn mất luôn tính năng tắt macro.

Click chuột phải trên file SetEnableMacros.reg chọn Edit bạn sẽ thấy nội dung trong đó như sau:


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\E xcel\Security]
"Level"=dword:00000001

Tùy theo Office mà ta thay đổi giá trị 11.
Office 97=8
Office 2000=9
Office XP=10
Office 2003=11
Office 2007=12. Thay "Level" = "VBAWarnings"

Theo các mức của "Security warning" ứng với các giá trị của Level như sau:

Verry High -> "Level"=dword:00000004
_____High -> "Level"=dword:00000003
__Medium -> "Level"=dword:00000002
_____Low -> "Level"=dword:00000001

ongtrungducmx25
23-11-07, 09:25 AM
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\E xcel\Security]
"Level"=dword:00000001
pác có thể thêm vào đó khi chạy một lần thì vô hiệu hóa, còn chạy lần hai thì không còn vô hiệu hóa có được không

Duong gia
23-11-07, 09:45 AM
Click chuột phải trên file SetEnableMacros.reg chọn Edit bạn sẽ thấy nội dung trong đó như sau:


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\E xcel\Security]
"Level"=dword:00000001

Tùy theo Office mà ta thay đổi giá trị 11.
Office 97=8
Office 2000=9
Office XP=10
Office 2003=11
Office 2007=12. Thay "Level" = "VBAWarnings"

Theo các mức của "Security warning" ứng với các giá trị của Level như sau:

Verry High -> "Level"=dword:00000004
_____High -> "Level"=dword:00000003
__Medium -> "Level"=dword:00000002
_____Low -> "Level"=dword:00000001


Bác TuanVNUNI, bác giải thích rõ file SetEnableMacros.reg này được không. Nói thật đến giờ mình không dám click cài đặt file SetEnableMacros.reg này của bác, vì sợ sau khi cài đặt ta open bất kỳ file Excel nào có macro là nó cho vào tuốt, không còn báo "Security warning" nữa. Mình chỉ muốn gán cái chức năng này cho một số file cần thiết thôi, còn những file khác thì không, vẫn hoạt động bình thường với form thông báo "Security Warning" chọn Disable/Enable Macros của nó chứ. Thanks

anhtuan1066
23-11-07, 11:20 AM
Bạn đừng có lo... khi muốn mọi chuyện trở lại như củ thì click phải chuột vào file .REG này, chọn Edit và sửa lại trong đó... Save file, cuối cùng Double Click vào file vừa save là xong!

Duong gia
23-11-07, 01:44 PM
Bạn đừng có lo... khi muốn mọi chuyện trở lại như củ thì click phải chuột vào file .REG này, chọn Edit và sửa lại trong đó... Save file, cuối cùng Double Click vào file vừa save là xong!

Cám ơn Mr. Tuấn

khoa_pr
06-04-14, 03:14 PM
Chào anh Nguyễn Duy Tuấn và các thành viên!
với bộ Office 2010 thì giá trị là bao nhiêu vậy, tôi thay bằng 13 thì không hiệu lực