Bảo mật trong VBA (1 người xem)

  • Thread starter Thread starter yeudoi
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Status
Không mở trả lời sau này.

yeudoi

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia
12/6/06
Bài viết
3,186
Được thích
7,640
Chào các sư phụ cho em hỏi làm sao để đặt pass trong VBA nhưng khi mình kích vào thì nó báo: Project unviewable. Mong được chỉ giáo
 
Bạn đã đặt pass rồi thì nó báo như vậy là đúng. Muốn không hiện thì không đặt pass nữa, khi đó code sẽ phơi ra thôi. :.
 
PhanTuHuong hiểu sai ý mình rồi. Ý mình là làm sao để làm được như vậy chứ không phải là gỡ bỏ pass.
 
Cái đó rất nhiều người mong muốn làm được. Bạn thử google: Excel + "Project unviewable" xem sao :)
 
Thế thì đơn giản quá.

Bạn vào Tools/Protection/Protect and Share Workbook

Sau đó khai pass là được.

Sau đó bạn vào macro thì nó sẽ hiện lên như bạn hỏi thôi (file ví dụ kèm theo).
 
Lần chỉnh sửa cuối:
Hình như không phải thế.

Ý của yeudoi là làm thế nào để đặt pws cho các code VBA mà khi mở ra không thể bật ra được vì không có chỗ để gõ pws ấy. Làm như thế thì ngay cả tìm được pws cũng ko thể mở được.

Hic, ko biết có đúng ko. Mình chỉ "nghe nói" thế thôi. Vụ này bạn cứ hỏi anh levanduyet ấy. Anh ấy đã từng nghiên cứu nhưng ko biết đã tìm ra vụ này chưa.
 
Lần chỉnh sửa cuối:
Đúng rồi Hai2Hai nói đúng ý mình rùi đó. Có lẽ mình phải nhờ thêm sư phụ Lê Văn Duyệt quá.
 
Hình như vấn đề này đã được bạn Tuân nghiên cứu thành công rồi, bạn thử hỏi xem.
 
Các bạn làm thử thế này nhé.
+ Đặt path trong VBA
+ Vào menu Tools\ chọn Share Workbook...
+ Bạn hãy cùng mở trên ít nhất 2 máy tính (hoặc một máy mở bằng 2 instance)
+ Khi đã mở như trên bạn vào VBA xem có phải bị "Project unviewable" không?

Vấn đề ở đây chúng tạo ra một "lỗi" mà MS EXCEL cho là lỗi, khi đó nó không cho mở form để nhập pass gọi là "Project unviewable". Vấn đề ở đây "lỗi" chúng ta vẫn dùng được chú không phải lối mà debug phát hiện ra.
 
Để hiện thông báo "Project unviewable", các bạn dịch tạm bản Tiếng Anh (để nâng cao ngoại ngữ- Lập trình mà mù ngoại ngữ thì như loài chim không có cánh mà thôi) và làm theo sẽ giải quyết được vấn đề. Nhưng lưu ý khi thực hiện như vậy sẽ không mở để sửa mã nguồn VBA của mình theo cách thông thường nhập mật mã được đâu. Muốn mở nó (tất nhiên đã khóa được thì tất phải mở được) phải dùng xảo thuật lập trình để bỏ khóa (ai chưa biết liên hệ với tôi để nhận giải đáp- Vì điều này liên quan đến việc bẻ khóa của các phần mềm lập VBA). Đọc cái ni để biết thêm:
Have you ever tried to open the VBA project of an Excel add-in just to be faced with a message box that said "Project is unviewable" instead of seeing the familiar password entry box ?
This type of security measure is based on the concept of "sharing" an add-in workbook. I stumbled on this particular method when I was working with a group of shared workbooks and tried to edit a VBA procedure in one of my userforms. I noticed that a shared workbook displayed the very same message box when I tried to open its VBA Project. As a matter of fact, Excel actually displays a warning message stating that macros cannot be viewed or edited in a shared workbook when sharing is turned on. This was my first clue as to what was being done. I kept trying and was able to find a method of locking the VBA project of an add-in workbook. As I learned early on, there are many different ways within Excel to accomplish the same goal.
Here, I explain the method that worked for me.
Important points to remember before starting:
This method is based on the concept of "sharing" an Excel add-in file

It was tried and tested with Excel 8 (97) and Excel 10 (2002)

Keep a back-up copy of your original (.xls) file

The VBA project locked with this method will be permanently locked against viewing or editing

The only way to update the VBA code will be to edit it in the original .xls workbook and then create a new add-in to replace the old one or you will have to create a VBA procedure in another workbook to make the add-in visible so it can be unshared

The best technique is to also protect your add-in's VBA project with a password

This method appears to exploit a bug in Excel
Start with an Excel workbook (.xls) that you want to turn into an add-in.

Save this workbook as an add-in. Use File>Save As... then select add-in from the "Save As type" dropdown list.

Close the .xls workbook.

Open the new add-in file you just created.

Open the VBE window by pressing Alt+F11.

Find your add-in file in the Project Explorer window and lock your project for viewing with a password.

Select the "ThisWorkbook" object and set its "IsAddin" property to False. This will unhide the worksheets in this add-in workbook.

Activate the Excel application window.

Select Tools>Share Workbook..., on the Editing tab check the box to share this workbook. Press OK to close.

Press OK to save and share this workbook.

Press OK to acknowledge the fact that macros cannot be viewed in a shared workbook.

Verify that [Shared] appears in the title bar after the file name.

Save this workbook again as an add-in. Select File>Save As..., then delete the quotation marks and the .xla extension from the filename. Select add-in from the "Save as type:" dropdown list.

Press Save, then press "Yes" to overwrite existing file.

Close this workbook and press "No" to not save changes.

Select File>Open, then browse to find and open your new add-in file. This add-in will open the same as any other Excel add-in with all of its sheets being hidden.

Press Alt+F11 to open the VBE window.

Find your add-in in the Project Explorer window and click to expand it's object tree.

You will see a message box titled "Project Locked" that displays the following message: "Project is unviewable". There will not be a password textbox only an "OK" and "Help" button.

You can open the add-in's locked VBA project by opening a new workbook and creating a VBA procedure to set the IsAddin property of the ThisWorkbook object of the add-in to False and then unshare the add-in workbook
 
Bạn nào muốn bảo mật cả chương trình Excel thì la lên bạn nhe', mình sẽ post bài hướng dẫn :).Điều mà mình muốn nói đến đó là khi mình mở Excel lên sẽ xuất hiện 1 form để login vào Excel. Nếu gõ ko đúng ID và pass sẽ hiện thông báo và đóng Excel. Chỉ có những ai có ID và pass thì mới sử dụng được. Hướng của mình là sẽ phân quyền sử dụng excel luôn, người nhập liệu thì chỉ có quyền nhập liệu mà thôi, admin sẽ được toàn quyền sử dụng excel hehe :). Điều này cũng đơn giản thôi nhưng do cv bận quá nên làm piếng làm. Ai có hứng thú thì post bài thảo luận chơi
 
Cái này hơi bị khó đấy bác ạ. Nếu viết bằng VBA hoặc sử dụng công cụ Digital Certificate for VBA Projects thì chỉ cần Disable Macro là được. Không biết bác có cao kiến gì không ?
 
Mọi người phải hiểu nghĩa của từ "bảo mật" trong ứng dụng phần mềm chứ ko mỗi người nói 1 kiểu đâm ra chẳng ai hiểu ai:

- Bảo mật lisence (làm sao để chống sử dụng trái phép PM)
- Bảo mật mức ứng dụng (cái mà lachinhan nói tới: ai được phép thực hiện công việc nào trong chương trình,...)
- Bảo mật mức hệ thống (ví dụ: làm sao để vượt qua bảo mật của hệ điều hành, còn đối với Excel thì làm sao để ko mở được VBA,...)
- Bảo mật mức CSDL (ví dụ: làm sao để tránh mọi người có thể truy cập trực tiếp 1 cách trái phép vào database. Đối với Excel thì làm sao để mọi người ko vào được các file chứa dữ liệu - sử dụng pws liệu có đảm bảo hay ko??)
- Bảo mật mức mạng (LAN, WAN, Internet: Firewall, v.v...)
- Bảo mật mức hành chính (dùng khóa cửa, xích sắt to đùng :D để chống kẻ trộm đột nhập trái phép vào phòng chứa dữ liệu hoặc phần mềm,...)

Đấy, sơ qua có ngần đấy cái mà người ta gọi là Security policy của phần mềm. Từ đó bạn sẽ suy ra đâu là cái bảo mật của các bạn. Tránh mỗi người nói 1 ý.
 
MrHieu đã viết:
Cái này hơi bị khó đấy bác ạ. Nếu viết bằng VBA hoặc sử dụng công cụ Digital Certificate for VBA Projects thì chỉ cần Disable Macro là được. Không biết bác có cao kiến gì không ?

Mình ko biết ý bạn Disable macro bằng cách nào, để mình đưa ra các tình huống nhé
+ Tắt Add in của Excel ===> không tắt được đâu bạn, vì bạn login sai ID và pass thì làm sao vào Excel được mà tắt.
+ Vào được Excel với ID của nhân viên nhập liệu cũng không tắt được Add in vì ID này bị hạn chế chức năng sử dụng Excel, chủ yếu là chỉ nhập liệu thôi. Để hạn chế chức năng sử dụng bạn khi load add in bạn deletle menu mặc định của Excel và khời tạo lại Menu theo ý mình, sau đó block luôn menu, khi block menu luôn nên ko thể vào customize để chỉnh được nữa. Hoặc Có thể xóa hết tất cả các menu của Excel, chỉ cần menu popup là đủ nhập liệu rồi :).
+ Còn 1 cách nữa để disable nè, bạn delelte luôn cái file add in hehe :). để giải quyết vấn đề này chỉ cần ko cho delete file là xong, cái này thuộc về bảo mật mạng hệ thống mình ko muốn đề cập nhiều ở đây.
+ Các cuối cùng Dùng BKAV quét sạch sẽ macro đi :) hehe.

Với 2 trường hợp cuối thì hết ý kiến luôn :). Vấn đề bảo mật của mình nói đến ở đây cũng chỉ tương đối thôi. Add in được viết ra để xài thôi ko phải để phá, mà có phá thì cũng bị kỹ luật hà (vấn đề bảo mật chủ yếu được áp dụng ở các công ty, cơ quan thôi, mà ở những nơi này phá hoại thì bị kỹ luật như chơi), mà chỉ những người viết được add in cho excel mới hiểu rõ mà vô hiệu được nó.
mình nghĩ với trình độ của nhân viên nhập liệu, và cán bộ văn phòng .... là không thể. Chỉ 1 số ít người am hiểu về VBA for Excel thui như mình chẳng hạn :). Nếu trong phòng có người hiểu biết về VBA thì nếu Add in bị xóa là nó phá chứ ko ai khác hehe, chủ yếu là do ý thức của mỗi người thôi.
Vấn đề về bảo mật là bao la, ko có bảo mật nào mà không có lổ hỏng cả phải ko bạn, hack - crack đầy ra đó.

Thôi làm việc đây khi nào rãnh lên post bài tiếp
 
hai2hai đã viết:
Mọi người phải hiểu nghĩa của từ "bảo mật" trong ứng dụng phần mềm chứ ko mỗi người nói 1 kiểu đâm ra chẳng ai hiểu ai:

- Bảo mật lisence (làm sao để chống sử dụng trái phép PM)
- Bảo mật mức ứng dụng (cái mà lachinhan nói tới: ai được phép thực hiện công việc nào trong chương trình,...)
- Bảo mật mức hệ thống (ví dụ: làm sao để vượt qua bảo mật của hệ điều hành, còn đối với Excel thì làm sao để ko mở được VBA,...)
- Bảo mật mức CSDL (ví dụ: làm sao để tránh mọi người có thể truy cập trực tiếp 1 cách trái phép vào database. Đối với Excel thì làm sao để mọi người ko vào được các file chứa dữ liệu - sử dụng pws liệu có đảm bảo hay ko??)
- Bảo mật mức mạng (LAN, WAN, Internet: Firewall, v.v...)
- Bảo mật mức hành chính (dùng khóa cửa, xích sắt to đùng :D để chống kẻ trộm đột nhập trái phép vào phòng chứa dữ liệu hoặc phần mềm,...)

Đấy, sơ qua có ngần đấy cái mà người ta gọi là Security policy của phần mềm. Từ đó bạn sẽ suy ra đâu là cái bảo mật của các bạn. Tránh mỗi người nói 1 ý.

hai2hai nói chí phải, đúng là đại ca của 4r, không biết nói gì hơn là " hảo hảo A, tại hạ khâm phục khâm phục "
 
lachinhan đã viết:
…….mình nghĩ với trình độ của nhân viên nhập liệu, và cán bộ văn phòng .... là không thể.Chỉ 1 số ít người am hiểu về VBA for Excel thui như mình chẳng hạn :)

Quả thực mình nghĩ bạn rất giỏi (nếu không muốn nói là cực giỏi) về VBA. Bởi những người amatuer như tụi mình chưa ai dám nói như vậy. Nếu vậy thì những lời sau đây nếu mình có nói sai thì mong thông cảm và mong được chỉ bảo (bởi mình biết bạn giỏi hơn mình rất nhiều - Về lập trình)

Từ khi mình mới tiếp cận với excel thì mình chỉ nghĩ nó là một bảng tính không hơn không kém (không có chuyện lập trình hay chạy nền hay gì gì đó). Vì thế mình nghĩ excel thật là đơn giản.
Nhưng khi mình tham gia diễn đàn và đặc biệt là được tiếp cận với phần mềm VNUNI® A-Excel của A Tuân thì mình mới thấy excel còn làm được nhiều việc lắm. Và mình cũng chỉ nghĩ rằng nếu giới hạn trong VBA (không dùng ngôn ngữ khác) thì VNUNI® A-Excel đã là một đỉnh cao (mình nghĩ là VNUNI® A-Excel không chỉ dựa vào VBA đâu ??).

Mình đã tham khảo một số chương trình excel lúc chạy khởi đầu cũng hiện ra form (khởi động = VBA) đòi nhập pw, nhưng khi không cho thi hành VBA (bằng cách này hay bằng cách khác) thì ta vẫn có thể truy nhập vào file đó được.

Rất nhiều phần mềm của hãng thứ 3 bây giờ cho phép ta cho phép người dùng được chạy cái này, không được chạy cái khác (trong HĐH) và xưa nay mình chỉ nghe nói là phân quyền trong windows, trong mạng; trong CSDL … chứ chưa thấy phân quyền trong excel. Không phải là không thể nhưng mình nghĩ là không đáng (phải làm) như vậy. Vì trong một công ty, Excel không chỉ dùng để chạy mỗi một chương trình (nếu có thì đó chỉ là cá biệt)
Nếu chỉ phân quyền khi file đó khởi động thì đúng như bạn nói là phải tạo ra add-in; chỉ khi chạy file đó thì add-in mới khởi động. Và khi khởi động thì nó sẽ làm các công việc như bạn đã trình bày (VNUNI® A-Excel cũng làm như vậy mà thôi). Vấn đề là không cho xóa add-in đó (phân quyền trong HĐH, LAN, protect folder….). Khi đó muốn phá cũng không được (cài BKAV hay cái khác ư ? đâu có quyền install đâu mà cài, chạy bất cứ chương trình (dù là Portable ) nào khác ngoài danh sách cho phép cũng đều bị ngăn lại)

Nhưng cái mà mình muốn nói đến không phải là chuyện đó, mà đó là chuyện 1 file excel bình thường (chỉ dùng VBA) thì có làm được như vậy hay không ? (giả sử bạn đưa lên 1 file rồi mình tải về máy mình, và mình toàn quyền “vọc”), và hơn nữa có đáng như vậy hay không thôi.[FONT=&quot](Vì nếu đến trình độ đó thì hãy dùng Excel như là một report của các CSDL khác)

Nếu có thể bạn hãy cho 1 file VD đi.
Thân!
[/FONT]
 
Lần chỉnh sửa cuối:
MrHieu đã viết:
Quả thực mình nghĩ bạn rất giỏi (nếu không muốn nói là cực giỏi) về VBA. Bởi những người amatuer như tụi mình chưa ai dám nói như vậy. Nếu vậy thì những lời sau đây nếu mình có nói sai thì mong thông cảm và mong được chỉ bảo (bởi mình biết bạn giỏi hơn mình rất nhiều - Về lập trình)

Hehe !! mình chỉ nói chi vui thôi, mình cũng chỉ là dân Amatuer thui, Mình là 1 cử nhân kinh tế và nghề nghiệp chính của mình là 1 nhân viên làm về lãnh vực Xuất Nhập khẩu và Ngân Hàng. Tin học chỉ là niềm đam mê của mình, mặc dù có lúc mình đã định chuyển hẳn sang làm IT. Tin học chỉ có Quản trị mạng là mình có qua trường lớp còn lập trình thì chỉ là tự học thôi bạn à. Bạn nói vậy mình thấy nhột quá hehe, .... Việc bảo mật như mình nói xuất phát từ cơ quan củ của mình... mình phải đi công tác trong 2 ngày, khi nào về sẽ trao đổi thêm . bạn cho mình địa chỉ mail để có gì mình gửi cho bạn 1 số file và chương trình. Mình có 1 chương trình decomplite tất cả các Add in, add in có cài pass nó bẻ khóa hết, có thể xem suorce thoải mái. mail của mình lachinhan@gmail.com
Chúc bạn vui
Thân
 
Chỉnh sửa lần cuối bởi điều hành viên:
lachinhan đã viết:
Bạn nào muốn bảo mật cả chương trình Excel thì la lên bạn nhe', mình sẽ post bài hướng dẫn :).Điều mà mình muốn nói đến đó là khi mình mở Excel lên sẽ xuất hiện 1 form để login vào Excel. Nếu gõ ko đúng ID và pass sẽ hiện thông báo và đóng Excel. Chỉ có những ai có ID và pass thì mới sử dụng được. Hướng của mình là sẽ phân quyền sử dụng excel luôn, người nhập liệu thì chỉ có quyền nhập liệu mà thôi, admin sẽ được toàn quyền sử dụng excel hehe :). Điều này cũng đơn giản thôi nhưng do cv bận quá nên làm piếng làm. Ai có hứng thú thì post bài thảo luận chơi


http://www.giaiphapexcel.com/forum/showthread.php?t=823

Bạn có thể xem qua ở đây!
 
TuanVNUNI đã viết:
Các bạn làm thử thế này nhé.
+ Đặt path trong VBA
+ Vào menu Tools\ chọn Share Workbook...
+ Bạn hãy cùng mở trên ít nhất 2 máy tính (hoặc một máy mở bằng 2 instance)
+ Khi đã mở như trên bạn vào VBA xem có phải bị "Project unviewable" không?

Vấn đề ở đây chúng tạo ra một "lỗi" mà MS EXCEL cho là lỗi, khi đó nó không cho mở form để nhập pass gọi là "Project unviewable". Vấn đề ở đây "lỗi" chúng ta vẫn dùng được chú không phải lối mà debug phát hiện ra.

Cám ơn bác đã chỉ dẫn. Tuy nhiên cho em hỏi 1 câu. Thế nếu file excel sau khi tạo "Project unviewable" mà lại gi thành file .xla thì khi muốn quay lại chỉnh sửa code VBA thì phải làm thế nào?
 
Khi đã chuyển về *.xla mà bị "Project unviewable" thì phải có phần mềm phá pass thôi.
 
TuanVNUNI đã viết:
Khi đã chuyển về *.xla mà bị "Project unviewable" thì phải có phần mềm phá pass thôi.

Vậy bác có thể cho em biết đó là phần mềm nào và có thể download ở đâu. Bác có biết là có cách nào cho hiện nên cửa sổ excel của file .xla không? ( Trực tiếp trong excel hay là dùng phần mềm)?

Em gửi cho bác TUANVNUNI 1 file không sử dụng biện pháp vào Tool/ share workbook như bác chỉ dẫn mà vẫn cảnh báo "project is unviewable".
(Mà gửi kèm file trong diễn đàn này bằng cách nào vậy.)
 
Chỉnh sửa lần cuối bởi điều hành viên:
Để cài PW cho VBA ... bạn bấm phím ALt+F11 để vào Vb editor, sau đó chọn Tool\VBAProject Propeties ... Chọn Gờ Trang Protection và gõ PW vào là xong ... Và nhớ đánh dấu chọn vào check Lock Project for Wiewing.
Have fun!
 
Thân gửi bạn Fubi!
Mình đã đọc phần trao đổi của bạn về chủ đề "bảo mật trong VBA". Rất cảm ơn bạn đã giúp anh em trong diễn đàn có thêm một cơ hội quý báu để rộng đường học tập. Trong phần cuối của tài liệu Tiếng Anh của bạn có một dòng, mình đặc biệt chú ý. Đó là: You can open the add-in's locked VBA project by opening a new workbook and creating a VBA procedure to set the IsAddin property of the ThisWorkbook object of the add-in to False and then unshare the add-in workbook
Bạn có thể hướng dẫn mình cách viết đoạn mã lập trình ấy được không?
Mình thực sự cần nó.
Cám ơn bạn rất nhiều.
 
Lần chỉnh sửa cuối:
Dear nguyethanhtuu,
--------------------
Để mình thay bạn Fubi trả lời bạn nhé:
Bạn thấy rằng IsAddIn là một thuộc tính của Workbook, vậy sao bạn không thử gán cho thuộc tính này của Workbook mà bạn muốn thay đổi một giá trị kiểu Boolean? Dưới đây là một ví dụ minh hoạ (minh hoạ thôi, cần thiết phải lập một thủ tục hay không thì tuỳ bạn):
Mã:
Public Sub IsAdd_In(Optional bk As Workbook, Optional blnIsAddIn As Boolean)
If bk Is Nothing Then Set bk = ActiveWorkbook
bk.IsAddin = blnIsAddIn
End Sub

Trình tự "khóa" bảng tính như thế nào thì trình tự "mở khóa" phải thực hiện ngược lại. Bạn rất chính xác khi tìm ra mấu chốt của vấn đề:
Trong phần cuối của tài liệu Tiếng Anh của bạn có một dòng, mình đặc biệt chú ý. Đó là: You can open the add-in's locked VBA project by opening a new workbook and creating a VBA procedure to set the IsAddin property of the ThisWorkbook object of the add-in to False and then unshare the add-in workbook
Đó là một trong những tư duy rất cơ bản của người người lập trình.
 
Lần chỉnh sửa cuối:
Thân gửi bạn Đào Việt Cường !
Mình đã làm theo sự mách bảo của bạn. Cụ thể: đã khai báo tên workbook, đã gán giá trị false cho thuộc tính IsAddin. Khi chạy, chương trình không báo lỗi gì, nhưng mở VBAproject vẫn "Project is unviewable"!
Bạn có thể chỉ bảo cụ thể hơn được không ?
 
Dear nguyenthanhtuu,
----------------------
Bạn sắp thành công rồi đó!
Bạn hiểu rằng chính việc Share Workbook dẫn đến Unviewable và nếu Workbook Is AddIn thì chúng ta không thể bỏ chế độ Share được. Việc phải "set the IsAddin property of the ThisWorkbook object of the add-in to False" là để cho chúng ta gỡ bỏ Share Workbook.
Now, tiếp tục đến cửa thứ 2 và mở khoá:
"then unshare the add-in workbook"
 
Bạn Đào Việt Cường thân mến !
Cảm ơn bạn đã động viên. Hiện tại mình vẫn dậm chân tai... cửa thứ 2 này từ hôm qua tới giờ. Tuy nhiên mình sẽ cố gắng. Nếu không được, mình lại tiếp tục gõ cửa các bạn.
 
Dear nguyenthanhtuu,
---------------------
Đừng nói là anh không biết UnshareWorkbook chỗ nào trên menu nhé!
Còn anh muốn code thì để em F1 ra đọc vậy. Lâu rồi nên em khổng nhớ, hình như có đoạn MultiUser... gì gì đó...
...
:pilot:
A đây rồi:
This example determines whether the active workbook is open in exclusive mode. If it is, the example saves the workbook as a shared list.
If Not ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.SaveAs fileName:=ActiveWorkbook.FullName, _ accessMode:=xlSharedEnd If
Nhưng để cho dễ hiểu thì anh xem cái này::thumbdown:
Mã:
Public Sub Workbook_UnShared(Optional bk As Workbook)
If bk Is Nothing Then Set bk = ActiveWorkbook
If bk.MultiUserEditing Then bk.ExclusiveAccess
End Sub
 
Mình làm theo hướng dẫn thì làm đc file Add-in (*.xla) hiển thị chữ "Project unviewable" nhưng bây giờ không tài nào mở đc nó ra nữa, thế mới đau chứ. Làm theo hướng dẫn của các bạn nhưng vẫn không ăn thua. Hay là tại mình ốc quá nhỉ --=0, bạn nào có thể hướng dẫn trình tự các bước mở file Add-in hiển thị chữ "Project unviewable" đc ko?
 
NHG đã viết:
Mình làm theo hướng dẫn thì làm đc file Add-in (*.xla) hiển thị chữ "Project unviewable" nhưng bây giờ không tài nào mở đc nó ra nữa, thế mới đau chứ. Làm theo hướng dẫn của các bạn nhưng vẫn không ăn thua. Hay là tại mình ốc quá nhỉ --=0, bạn nào có thể hướng dẫn trình tự các bước mở file Add-in hiển thị chữ "Project unviewable" đc ko?
Giới thiệu các bạn một topic ngược lại với topic này.
http://www.giaiphapexcel.com/forum/showthread.php?p=16615#post16615

Lê Văn Duyệt
 
Chào mọi người.
Em cũng có một file xls tính toán đã lập ra từ lâu lắm, hồi đó có dùng Password view để lock VBA code. Sau đó chẳng hiểu thế nào nghịch vào "Protect and share workbook" đánh vào một cái password mà không tài nào bây giờ có thể nhớ nổi (ngày xưa chỉ nghĩ nó cũng giống như cái password lock worksheet thôi, dùng cái add-in "password.xla" là phá được). Ai dè giờ muốn xem VBA code lại không được, không thể nhập pass được nữa. Đọc mấy bài trên tôi biết là cần phải bỏ cái unshare đi. Nhưng mà không tài nào mà nhở nổi cái password linh tinh ngày xưa đặt nữa. Chỉ nhớ mỗi cái password của VBA thôi. Dùng mấy cái tool phá mã nhưng mà chỉ phá được lock sheet và lock workbook. Chán quá
Ai có cách gì thì bày cho tôi vơi.
Xin chân thành cảm ơn.
------------------------
 
Cảm ơn, ttphong2007
Có thể chương trình mà anh giới thiệu có khả năng dò tìm mã (pass). Tuy nhiên liệu nó có thể dò được mã của "protect and share workbook" không?. Vì không cần có mã này thì em vẫn mở được file tính toán ra, Vẫn cho nhập số liệu, vẫn tính toán bình thường, chỉ khác là không thể vào VBE nữa vì "project is unviewable". Chỉ có cách unshare thôi.
Anh đã dùng thử chương trình này để unshare chưa (Còn mấy loại mã khóa file, hay là mã khóa sheet hay worksheet thì thật sự không đáng ngại).
Cảm ơn anh vì đã giúp đỡ.
Thái }}}}}
 
Chào DamXuanThai,

Bản thân phần mềm sẽ không thể UnShare Workbook được, nhưng mình sẽ có cách UnShare Workbook. Bạn làm theo trình tự sau:

1. Dùng phần mềm tìm lại tất cả các password: open, modify, VBA Project (không xem được trong chế độ ShareWorkbook).

2. Mở tập tin đó ra, Save As theo định dạng Excel version thấp hơn khi đó Excel thông báo lỗi, cứ OK

3. Nhấn Alt+F11 và VBE. Sẽ thấy được các Object trong VBP Project và có thể copy code ra chỗ khác hoặc làm tiếp để UnShare. Nhập mật mã tìm thấy ở bước 1 cho VBA Project và OK.

4. Ra lại Workbook, lúc này đang ở chế độ chưa Share bạn vào chọn Share và đặt mật mã mới cho nó. Và lưu lại.

5. Mở lại tập tin vừa lưu này và UnProtect Workbook với mật mã vừa đặt. Thế là xong ^_^

Good luck,
TP.

Lưu ý: Tôi không chịu trách nhiệm nếu bạn dùng cách này mở tập tin của người khác
 
Ngày xưa tớ nhớ có một topic về bẻ VBA chẳng thấy bác nào quan tâm.
Bạn nào cần lock VBA thì gửi cho tớ giúp. Đây là lỗi khá nghiêm trọng của
Microsoft nên mình không nên tiết lộ ==> ảnh hưởng đến chính những người
phát triển chung. kể cả các phiên bản sau này đã đổi cách mã mật khẩu
xong lỗ thủng thì còn nguyên vì tương thích ngược cho ghi về 97.

Xem được it code của VUNI :). nói vậy thôi chứ chẳng để làm gì. Nói chung
từ khi biết lỗ hổng đó mình ghét cay ghét đắng VBA.

Ví dụ: cái view cái modun của Vietkey. đợi tớ gửi phát. hay mất điẹn lắm :(

Mã:
Private Sub CmdBtnFindCode_Click()
    CBCodSource.ListIndex = detectCode - 1
End Sub

Private Sub CBCodSource_Click()
    Dim idx1 As Integer, idx2 As Integer
    idx1 = CBCodSource.ListIndex + 1
    idx2 = CBCodDest.ListIndex + 1
    If idx1 = 40 Then idx1 = 39
    If idx2 = 40 Then idx2 = 39
    setcode idx1, idx2
    idCodeSource = idx1
    idCodeDes = idx2
End Sub
Private Sub CBCodDest_Click()
    CBCodSource_Click
End Sub

Private Sub CommandStop_Click()
    IsStop = True
    CommandStop.Enabled = False
End Sub


Sub myClose_Click()
    Unload Me
End Sub


Private Sub OptionButtonDown_Click()
    SelectRange Me
End Sub

Private Sub OptionButtonFull_Click()
    SelectRange Me
End Sub

Private Sub OptionButtonSelect_Click()
    SelectRange Me
End Sub

Private Sub OptionButtonUp_Click()
    SelectRange Me
End Sub

Sub Replaceall_Click()
    CBCodSource_Click
    doConvert
    Percent myPross, 100
End Sub
Sub setcode(Sour As Integer, Des As Integer)
    If Me.Tag <> "LoadOK" Then Exit Sub
    Me.LabelTest.Text = TestConvert(Sour, SpinButton1.Value)
    VK_Code2Code Sour, Des
    VK_Code2Code Sour, Des
    flagVIQR = (Sour = 24)
End Sub

Private Sub SpinButton1_Change()
 With Me
    setcode .CBCodSource.ListIndex + 1, .CBCodSource.ListIndex + 1
    .LabelTest.SelStart = Len(.LabelTest.Text)
    .LabelTest.SetFocus
End With
End Sub
Private Sub UserForm_Initialize()
Dim Code As Integer
    With Me
        .imgPanel.Picture = frmResource.vkpanel.Picture
        .myClose.Picture = frmResource.myClose.Picture
        .CommandStop.Picture = frmResource.CommandStop.Picture
        .CommandHelp.Picture = frmResource.CommandHelp.Picture
        idCodeSource = detectCode
        checkDefCode
        'idCodeSource = iDefaultCode
        Code = idCodeSource
        SetFontList .CBCodSource, Code - 1
        SetFontList .CBCodDest, 38 ' 14
        'idCodeDes = 39
        .Tag = "LoadOK"
    End With
    myLoadSetting
    SelectRange Me
    CBCodSource_Click
End Sub
Private Function TestConvert(Sour As Integer, l As Integer) As String
    Dim TempStr As String, TempStr1 As String
    VK_Code2Code Sour, 15
    TempStr1 = GetWordsForTestConvert(l)
    TempStr = TempStr1 + TempStr1
    TestConvert = Left(TempStr, VK_Convert(TempStr1, TempStr))
End Function

Private Function mySaveSetting()
    SaveSetting myApp, Section, "ChBSave", Str(Me.ChBSave.Value)
End Function
Private Function myLoadSetting()
    ChBSave.Value = Trim(GetSetting(myApp, Section, "ChBSave")) = "True"
End Function
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    mySaveSetting
End Sub

Mà thôi không anh Tuấn Việt Key kiện tớ vi phạm, nghịch ngợm thì chết.
Em chỉ học tập thôi anh nhé :)
 
Chỉnh sửa lần cuối bởi điều hành viên:
Remove VBA Protection 1.1.2
removes VBA project passwords and other protections unlocks Excel 5 or higher add-ins, workbooks and sheets, removes the password to modify and/or share, repairs small damages in the VBA projects and unlocks Excel VBA Lock protected Excel files.
The tool has several advantages over other VBA password recovery tools; no other tool (as far as we now) can remove the VBA protection from unviewable projects and projects protected with a newer VBA version than you have.
The VBA code protection is removed even in case the Excel workbook sharing bug made the project unviewable or in situations where Excel VBA Lock was used to protect the code and you have misplaced the original, unprotected file.
Buy the full version of the tool (20 US$)
https://www.plimus.com/jsp/buynow.jsp?contractId=1666338
 
Theo tôi lỗi "Project unviewable" là do bản Excel trước mở file đã lưu bằng Excel sau.
Ví dụ file viết bằng VBA nếu đặt Password trên office XP khi mởi bằng office 98 thì sẽ nhận thông báo lỗi trên.
Muốn hết lỗi này bạn phải bỏ Password thì Excel version trước mở ra sử dụng được, tất nhiên có thể một số lệnh của VBA sẽ báo lỗi - lúc đó sửa lại sau.
 
DotNhan đã viết:
Theo tôi lỗi "Project unviewable" là do bản Excel trước mở file đã lưu bằng Excel sau.
Ví dụ file viết bằng VBA nếu đặt Password trên office XP khi mởi bằng office 98 thì sẽ nhận thông báo lỗi trên.
Muốn hết lỗi này bạn phải bỏ Password thì Excel version trước mở ra sử dụng được, tất nhiên có thể một số lệnh của VBA sẽ báo lỗi - lúc đó sửa lại sau.
Bác tham khảo ở đây nhé :
http://www.giaiphapexcel.com/forum/showthread.php?t=1448
http://www.giaiphapexcel.com/forum/showthread.php?t=260
http://www.giaiphapexcel.com/forum/showthread.php?t=1448


Thân!
 
Status
Không mở trả lời sau này.

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

Back
Top Bottom