Có thể dùng vba để xóa vba đc không?

Liên hệ QC

quykiemsau

Thành viên chính thức
Tham gia
4/8/10
Bài viết
66
Được thích
0
Em chào các anh chị!
Có code nào có thể test 1 điều kiện nào đó để xóa toàn bộ vba trong file Excel được không ạ?
Cụ thể là
ô A1! của sheet 1! em đặt điều kiện hoặc =0 hoặc =1.
Khi Open file:
ô a1=1 thì file chạy bình thường.
Nếu A1=0 thì toàn bộ vba trong file bị xóa sạch.
Có được không ạ?
 
Xin Chào các Bác! Chúc sức khỏe! ^^
Trước hết là Em xin trân thành cám ơn các Bác đã giúp em hoàn thành Topfig này, Đặc biệt là 2 Bác siwtom
ndu96081631 đã có những bài viết rất bất hủ.
Sau là xin Ban quản trị khóa TopFig này lại vì thật sự là bài viết thứ #41 của Bác siwtom quá ĐỘC!!!
Em không phải là người quá ích kỷ nhưng đúng như các Bác lo xa Xã hội "Lành ít Dữ nhiều" mà ở Diễn đàn này ai cũng mong muốn mọi điều tốt đẹp! Không ai muốn một tiếng xấu nào đến diễn đàn này cả!
Hơn nũa những ai cần biết trong chủ đề này đều được biết cả rồi không nên phổ biến rộng thêm nữa!
Còn bài viết này của Bác Nghĩa:
Tôi không chắc chắn lắm, nhưng nếu chọn mở khóa một File Excel nào đó thì sẽ hiện lên một Browser và ta chỉ chọn file Excel cần mở khóa, thông qua đó chạy thủ tục mở khóa thôi, đâu nhất thiết mở khóa khi file đang activate đâu nhỉ?
Đúng là Em cũng muốn đợi đáp án! Nhưng nó đã đi quá xa so với chủ để Em đưa ra.
Nếu có thể được thì BÁc Nghĩa chuyển nó sang 1 chủ đề khác sát thực nhé!
Đã sống trong Luật thì phải theo Luật đúng không ạ!
Hj! Tks GPE! Em không ngờ TopFig đầu tay này lại Hot đến thế ( mới đầu đúng là hơi nản... :))..)! ^^
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Mình biết rồi, nhưng ở đây là If Hook nên mới siêu!

Bạn có 3 cách viết:
1.
a = Hook
if a then
2. if Hook = TRUE then
3. if Hook then
------------
Bạn biết gì về cấu trúc: IF đk THEN?
đk là biểu thức trả về giá trị lôgíc - boolean.
Khi gặp cấu trúc IF đk ... thì trước tiên biểu thức đk được tính giá trị, sau đó tùy giá trị thế nào mà thực hiện code.
Ta có các biến lôgíc, các hàm trả về giá trị lôgíc ... Chúng được kết nối với nhau bởi OR, AND, và >, <, >=, <=, = (với 2 vế không nhất thiết là các giá trị lôgíc).
Với a, b, HamGiDo(...) as boolean, c, d as Long thì:
TRUE, FALSE, a, b, HamGiDo, (a or b), (a or b) and HamGiDo, c = d, (c = d) and b, c >=<= d v...v đều là biểu thức.
Có thể nói TRUE, FALSE, a, b, HamGiDo là những biểu thức đơn.
Với IF HamGiDo THEN thì cũng như mọi khi thôi, tức trước tiên cần tính giá trị của "biểu thức" HamGiDo. Việc tính giá trị của biểu thức HamGiDo là việc xác định giá trị trả về bởi HàmGiDo, tức code của HamGiDo phải được thực hiện và giá trị trả về sau khi thực hiện code là giá trị của biểu thức.
Hàm Hook sau khi thực thi thì trả về giá trị Boolean cũng chính là giá trị của biểu thức điều kiện, thế thôi.
Khi bạn tính biểu thức trong đó có sin(x) (Riêng sin(x) cũng là biểu thức rồi) thì bạn "bấm" máy tính tay (tức thực hiện code tính sin): x --> sin, còn khi máy nó gặp HamGiDo thì nó "thực hiện code" của HamGiDo và có kết quả do hàm trả về.
Kiểu viết 2 và 3 như trên kết quả là như nhau nhưng thực hiện có sự khác nhau đấy nhé.
Ta tính giá trị của biểu thức (a = b), a và b có thể có dạng tổng quát vd. a = x + y, b = k + l + m + n
Việc tính được giá trị của a hay b vẫn chưa xong. Giá trị của biểu thức (a = b) được tính như sau:
1. tính a
2. tính b
3. tính a = b (so sánh)
Với a, b as boolean tương tự. Tính được a hay b TRUE hay FALSE vẫn chưa kết luận được gì về giá trị của biểu thức a = b. a có thể = FALSE, b = FALSE nhưng a = b = TRUE.
Với IF Hook then thì có được giá trị trả về của Hook cũng chính là giá trị của đk thì việc xác định đk kết thúc.
Với IF Hook = TRUE then thì dù có được giá trị do Hook trả về thì giá trị của đk vẫn chưa được xác định. Phải thực hiện phép so sánh Hook = TRUE mới có được giá trị của đk.
------------
Cũng nên nhớ là nếu bạn có hàm Hichic và bạn viết: call Hichic (Hichic) thì có nghĩa là: code của Hichic được thực hiện nhưng kết quả trả về không dùng làm gì cả, không được lưu ở đâu cả.
Nhưng khi bạn có:
a = Hichic
b = 5 + Hichic
IF Hichic > a + sin(xyz) THEN
....
Thì không chỉ là code của Hichic được thực thi mà giá trị do nó trả về còn dùng cho các tính toán tiếp theo.
Vì vậy với cùng một hàm Hichic thì "chỗ này" bạn cần giá trị do hàm trả về thì bạn viết: a = Hichic, nhưng ở "chỗ khác" bạn không cần giá trị trả về mà chỉ cần thực thi code thôi (hàm không chỉ trả về giá trị mà hàm có thể làm nhiều việc trong code) thì bạn viết: call Hichic. Bạn có thể viết a = Hichic nếu muốn nhưng không bắt buộc.
 
Upvote 0
Xin Chào các Bác! Chúc sức khỏe! ^^
Trước hết là Em xin trân thành cám ơn các Bác đã giúp em hoàn thành Topfig này, Đặc biệt là 2 Bác siwtom
ndu96081631 đã có những bài viết rất bất hủ.
Sau là xin Ban quản trị khóa TopFig này lại vì thật sự là bài viết thứ #41 của Bác siwtom quá ĐỘC!!!
Em không phải là người quá ích kỷ nhưng đúng như các Bác lo xa Xã hội "Lành ít Dữ nhiều" mà ở Diễn đàn này ai cũng mong muốn mọi điều tốt đẹp! Không ai muốn một tiếng xấu nào đến diễn đàn này cả!
Hơn nũa những ai cần biết trong chủ đề này đều được biết cả rồi không nên phổ biến rộng thêm nữa!
Còn bài viết này của Bác Nghĩa:

Đúng là Em cũng muốn đợi đáp án! Nhưng nó đã đi quá xa so với chủ để Em đưa ra.
Nếu có thể được thì BÁc Nghĩa chuyển nó sang 1 chủ đề khác sát thực nhé!
Đã sống trong Luật thì phải theo Luật đúng không ạ!
Hj! Tks GPE! Em không ngờ TopFig đầu tay này lại Hot đến thế ( mới đầu đúng là hơi nản... :))..)! ^^


Bạn lo ngại cho chủ đề "nhạy cảm" này rất đúng. Mình cũng thấy vậy nên chỉ bàn luận những câu loanh quanh chớ không hỏi vào trọng tâm. Nếu những dòng code trên của siwtom phục vụ cho yêu cầu khác thì mình còn được mổ xẻ học hỏi nhiều hơn.

Theo mình thì ngoài việc học được những câu lệnh trên, nhờ đó mình còn học được chiêm ngưỡng, học hỏi thế giới code mà ở đó, việc đặt pass chỉ là để tránh sự vô tình của người dùng làm hỏng file và những kẻ tào lao như mình còn học được: "Từ nay thì mấy "chú tào lao" đừng mong mà Pass VBA code gì nữa nhé ---> Nếu siêu thì cứ tạo DLL đi, còn không thôi (có đặt pass của uổng công)" - ndu
Học xong rồi thì muốn làm gì thì làm, đừng làm như Lý Thông là được.

Một cái dao sắc đưa cho người tiều phu sẽ có ích rất nhiều, còn nếu vào tay kẻ cướp thì thật nguy hiểm.
 
Lần chỉnh sửa cuối:
Upvote 0
Hay cho cái câu Con dao sắc pử trong tay Bác Tiều Phu khác với ở trong tay bọn cướp!
Đôi khi có những cái mà ta muốn học hỏi ở 1 file nào đó nhưng điều kiện không cho phép nên cũng khổ!
Vậy thì vấn đề dưới đây! Mong các thầy cho đáp án!
vậy có thủ tục nào mở file excel bị khóa không? (mà nhanh như vậy càng tốt).

Sẳn đã VBA làm rồi thì làm luôn cái File chắc cũng hỏng sao đâu hen!

Xin cám ơn trước.
 
Upvote 0
Thật quá bất ngờ (kinh ngạc) khả năng của VBA. Dùng Excel trị Excel. Dù chưa thể hiểu được Code của anh Siwtom nhưng cho Dhn46 bày tỏ lời cảm ơn vì biết tính năng mới này. Nhưng em có thắc mắc: Vì sao dùng Open Office thì có thể đọc được các File khóa mã và thậm chí cả file của anh Quanghai nữa còn Excel thì không? Cùng sử dụng VBA tại sao lại có sự khác nhau đó?
 
Upvote 0
Thông thường pass VBA rất dễ mở hoặc phá, nhưng em có file này không thể phá pass được. Anh chị nào mở hoặc phá được pass của file này em thật sự phục sát đất. File này không có dữ liệu gì cả, chỉ có pass VBA bên trong thôi

Giờ xem lại Em mới để ý! Bác Hải tự nhiên gửi lên 1 cái file rất lợi hại!
Nếu không có file này cũng E là hơi khó để kết thúc đề tài này :D
 
Upvote 0
Giờ xem lại Em mới để ý! Bác Hải tự nhiên gửi lên 1 cái file rất lợi hại!
Nếu không có file này cũng E là hơi khó để kết thúc đề tài này :D

Đã nói rồi. Công của quanghai to vô cùng.
Một kho vàng ... giả mà phơi bầy cho thiên hạ xem trong khi có viên ngọc quí thì cứ dấu mãi tới giờ.
 
Upvote 0
Đã nói rồi. Công của quanghai to vô cùng.
Một kho vàng ... giả mà phơi bầy cho thiên hạ xem trong khi có viên ngọc quí thì cứ dấu mãi tới giờ.
Em thử file của bác tất cả các file của em đặt mật khẩu VBAProject đều mở ra được (kể cả các file AddIn) nhưng file của quanghai không mở được Bác nhỉ
 
Upvote 0
Em thử file của bác tất cả các file của em đặt mật khẩu VBAProject đều mở ra được (kể cả các file AddIn) nhưng file của quanghai không mở được Bác nhỉ

file của quanghai là khác. Bạn đặt mật khẩu cho VBProject và nó luôn hiển thị cửa sổ cho bạn nhập mật khẩu. Còn file của quanghai nó có "đòi" cái gì đâu?
Loại như của quanghai thì bạn có thể thử dùng HexEditor rồi ... Đọc lại chủ đề này sẽ biết
Mỗi bệnh một thuốc chứ bạn
 
Lần chỉnh sửa cuối:
Upvote 0
file của quanghai là khác. Bạn đặt mật khẩu cho VBProject và nó luôn hiển thị cửa sổ cho bạn nhập mật khẩu. Còn file của quanghai nó có "đòi" cái gì đâu?
Loại như của quanghai thì bạn có thể thử dùng HexEditor rồi ... Đọc lại chủ đề này sẽ biết
Mỗi bệnh một thuốc chứ bạn
Em hiểu cái khác file quangha là không cho view project là file Bác không mở được???
Bác cho em hỏi khắc phục nó như thế nào. Bây giờ file em muốn như thế thì làm như thế nào?
Cảm ơn Bác
 
Upvote 0
Đã nói rồi. Công của quanghai to vô cùng.
Một kho vàng ... giả mà phơi bầy cho thiên hạ xem trong khi có viên ngọc quí thì cứ dấu mãi tới giờ.

Quanghai chắc cũng vô tình thôi. Kịch tính chỉ bắt đầu xảy ra từ khi ndu gọi siwtom lên bảng và màn diễn "ảo thuật" của siwtom chỉ thực sự bùng nổ khi ndu khám phá ra tác dụng của nó. Cảm ơn 3 bạn rất nhiều.
 
Upvote 0
Em hiểu cái khác file quangha là không cho view project là file Bác không mở được???
Bác cho em hỏi khắc phục nó như thế nào. Bây giờ file em muốn như thế thì làm như thế nào?
Cảm ơn Bác

Tôi đã viết rồi. Bạn đặt mật khẩu thì Excel hiển thị hộp thoại bắt bạn nhập rồi khi đóng hộp thoại thì Excel kiểm tra xem kết quả có "thỏa mãn" nó không, nếu có thì "mở". Do Excel gọi hàm của system để tạo hộp thoại nên mới có cơ hội đánh tráo hàm này bằng hàm của ta, mà hàm của ta chả hiển thị hộp thoại nào cả và trả về kết quả "thỏa mãn" Excel. Thế thôi.
Còn khi mà "người ta" không gọi gì cả để hiển thị hộp thoại nhập mật khẩu ("người ta" có đòi hỏi gì đâu mà hiển thị hộp thoại nhập mật khẩu?) thì tráo cái gì? Mà tráo cái gì, để làm gì? "Người ta" có cần kết quả nào đâu? "Người ta" đá đít mình luôn chứ có yêu cầu gì đâu?
Tôi đã nói rồi. Với dạng file như của quanghai thì bạn thử ... đọc ký chủ đề này đi. Bệnh khác thì phải dùng thuốc khác. Trong chủ đề có nói chút về thuốc mà.
 
Upvote 0
Vấn đề Unviewable em đã gặp và đã tìm được cách giải quyết từ hơn 1 năm về trước, và ngay trên diễn đàn tác giả Trần Thanh Phong cũng đã có những bài viết về vấn đề này (CMG, DPB, GC). Thực sự việc bảo mật Code cũng đã được nói rất nhiều, bàn rất nhiều, lộ thông tin, lộ bảo mật, mất dữ liệu...v.v.. Nhưng với trình độ không chuyên, mày mò, vật lộn với VBA cơ bản như em thì mớ Code ấy chưa là gì cả. Khi các anh chị chuyên IT viết phần mềm tức khắc các anh chị biết cách bảo mật. Về Topic này em nghĩ vẫn sẽ là nơi trao đổi bảo mật Excel trong giới hạn không chuyên.(Nếu chủ topic không có nhã ý thì đề nghị Mod cho 1 topic về bảo mật Version mới để các thành viên hỏi đáp). Những người tham gia diễn đàn này hầu hết có ý thức về Code, về Excel...vậy nên hỏi để biết, hỏi để tìm hiểu cũng là 1 nhu cầu chính đáng.
Xin cảm ơn!
 
Upvote 0
Bây giờ file em muốn như thế thì làm như thế nào?

À mà "muốn như thế" có nghĩa là gì?
Là muốn bỏ "Project is unviewable"? Nếu thế thì đọc bài của dhn46
Là muốn bắt chước người ta làm "Project is unviewable"?
------------
Một khi ta đã biết là nếu cần bỏ "Project is unviewable" thì trong HexEditor ta có thể sửa CMG,
DPB, GC thì để làm được "Project is unviewable" ta cũng "tìm" ở "chỗ đó" thôi.
Tôi đã thử "vài cái" thì thấy làm cũng đơn giản thôi.
Tôi chỉ cách tốn ít thao tác nhất.
Bạn mở HexEditor --> chọn trong HexEditor để mở tập tin Excel mà bạn cần thao tác.
Chọn Search và tìm CMG. Bạn sẽ thấy đại loại là CMG="C4C6276D2F3533353335333533"
Bạn hãy sửa 1 ký tự trong ngoặc " " sang ký tự khác thuộc tập [0-9, A, B, C, D, E, F]. Bạn có thể sửa tất cả các ký tự nhưng ta đã
thống nhất với nhau là ít thao tác nhất rồi mà.
Ở lân cận CMG cũng có đại loại DPB="...". Bạn cũng sửa 1 ký tự trong ngoặc. Rồi ở gần có
GC="...". Làm tương tự. Save lại tập tin. Xong
Mang đi "dọa" đồng nghiệp
 

File đính kèm

  • HexEditor_en.rar
    853.1 KB · Đọc: 328
Lần chỉnh sửa cuối:
Upvote 0
Quanghai chắc cũng vô tình thôi. Kịch tính chỉ bắt đầu xảy ra từ khi ndu gọi siwtom lên bảng và màn diễn "ảo thuật" của siwtom chỉ thực sự bùng nổ khi ndu khám phá ra tác dụng của nó. Cảm ơn 3 bạn rất nhiều.

Ý Em nói file của Bác Quang Hải đưa nên chỉ tưởng nó là thách thức mở pass thôi.
Mở file nên nhìn chẳng có gì cả...bật trang lập trình thì mới nhìn thấy code.
VÀ ít khi ai quan tâm đến code đó là gì và có tác dụng như thế nào... rồi cuối cùng là quẳng file xếp xó!
Duy chỉ có Bác siwtom lúc đó đã để ý đến nó và đã phân tích hiểu được vấn đề rồi post nên khiến mọi người mới ngạc nhiên.
Điều em muốn nói ở đây là Bác siwtom là người rất cẩn thận và tinh tế! Dù là 1 chi tiết nhỏ Bác cũng không bỏ qua!
Em nghĩ người có Công nhiều nhất trong bài viết này vẫn là Bác, còn chủ nhân Bác Quang Hải tuy sở hữ file đó nhưng có thể Bác Hải chưa sử dụng được nó, vì Pass Bác cũng chưa mở được mà hì hì...
Bác ndu thì lại là người hiểu thấu mọi vấn đề trong lĩnh vực kiến thức thì ai cũng biết rồi, còn về suy nghĩ và ý tưởng của thành viên như tôi Bác nhìn nhận và hiểu được phân tích lại thắc mắc của tôi để mọi người tránh hiểu lầm nên chủ đề này mới có thể tiếp tục đến đây một cách thuyết phục!

Cám ơn 3 Bác nhiều nhé !!! ^^
 
Upvote 0
Về Topic này em nghĩ vẫn sẽ là nơi trao đổi bảo mật Excel trong giới hạn không chuyên.(Nếu chủ topic không có nhã ý thì đề nghị Mod cho 1 topic về bảo mật Version mới để các thành viên hỏi đáp). Những người tham gia diễn đàn này hầu hết có ý thức về Code, về Excel...vậy nên hỏi để biết, hỏi để tìm hiểu cũng là 1 nhu cầu chính đáng.
Xin cảm ơn!

Không có vấn đề gì cả, Nếu có thể được các Bác cứ trao đổi ở chủ đề này thoải mái thoải mái những vấn đề liên quan càng sôi nổi càng tốt.
Mới đầu các Bác lo ngại có chiều hướng không hay! Nhưng mọi việc đã được nhin nhận theo chiều hướng khá tốt rồi!
Đã đến nước này rồi thì cứ tơi lên các bác à!
 
Upvote 0
Ẹc... Ẹc... Từ nay thì mấy "chú tào lao" đừng mong mà Pass VBA code gì nữa nhé ---> Nếu siêu thì cứ tạo DLL đi, còn không thôi (có đặt pass của uổng công)
Do em không biết có cách nào mở file trong trường hợp Project is unviewable không? Nhưng với file của anh siwtom thì chưa thành công anh à.
 
Upvote 0
Do em không biết có cách nào mở file trong trường hợp Project is unviewable không? Nhưng với file của anh siwtom thì chưa thành công anh à.

Đương nhiên là không view được rồi vì anh Siwtom hướng dẫn làm cho Project Unview mà. Muốn view thì làm cách khác thôi, so sánh và thay thế... dùng Hexeditor thể tráo pass nhé.
 
Upvote 0
Do em không biết có cách nào mở file trong trường hợp Project is unviewable không? Nhưng với file của anh siwtom thì chưa thành công anh à.

- Mở file bằng Hexeditor
- Xóa sạch hết từ CMG đến GC
- Lưu file lại
- Mở file lên kiểm tra ---> Bất cứ thằng Unview hay Protect VBA gì gì đó cũng sẽ đi.. Pháp ở
 
Upvote 0
Unviewable.GIF
- Mở file bằng Hexeditor
- Xóa sạch hết từ CMG đến GC
- Lưu file lại
- Mở file lên kiểm tra ---> Bất cứ thằng Unview hay Protect VBA gì gì đó cũng sẽ đi.. Pháp ở
Sao em thấy chưa được, Em xóa 3 thằng nhưng chỉ xóa những ký tự trong ngoặc kép còn vẫn để lại CMG""...
thì kết quả bị thế này & code khg còn một mống!Em cảm ơn!
 
Upvote 0
Web KT
Back
Top Bottom