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 ạ?
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 ạ?
Nếu bạn sử dụng Office 2007 thì đơn giản rồi, cứ viết code dạng ThisWorkbook.Saveas "Ten File", FileFormat:=51 thì file này sẽ có đuội là .xlsx >>> mất hết VBA trong file
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 ạ?
Xóa thì được rồi, nhưng file này sẽ chỉ hoạt động 1 lần duy nhất, xong chuyện nó trờ thành "thằng què" rồi còn gì
Bạn không cảm thấy "tiếc" những code đã viết sao? Trừ phi đó không phải là code của bạn và bạn đang có ý đồ phá hoại
Xóa thì được rồi, nhưng file này sẽ chỉ hoạt động 1 lần duy nhất, xong chuyện nó trờ thành "thằng què" rồi còn gì
Bạn không cảm thấy "tiếc" những code đã viết sao? Trừ phi đó không phải là code của bạn và bạn đang có ý đồ phá hoại
Bác nói có quá lời không vậy?
Không biết thì hỏi thôi? Phải chẳng câu hỏi này là vi phạm nội quy của GPE?
Tôi thì chỉ có 1 mục đích cụ thể là là không muốn mở file này ở một máy khác hay là đường dẫn khác. Nếu mở ở đuwongf dãn khác thì điều kiện của ô A1 của tôi sẽ Check.
Sai thì như vậy đó. Còn đúng thì không sao.
Chỉ là như vậy thôi!
Chẳng lẽ nhìn cái tên đăng kí của Tôi Bác có đánh giá tôi như vậy sao?
SAI!
Tôi nhìn việc không nhìn người
Code này đương nhiên làm được, nhưng vì nó chứa đựng mức độ nguy hại nhất định nên tôi phải hỏi cho rõ:
- Tại sao lại không cho mở file ở máy khác?
- Có phải vì bạn không muốn người khác "cướp" lấy tài sản của bạn?
Nghe thì cũng hợp lý. Nhưng nếu tài sản ấy của chính bạn, cũng tức code chứa trong file do bạn viết... Vậy bạn cũng thuộc dạng có trình độ rồi ---> Cứ search tìm sẽ có ngay thứ bạn muốn, chế biến tí xíu là xài được thôi
Tôi nói đúng chứ?
SAI!
Tôi nhìn việc không nhìn người
Code này đương nhiên làm được, nhưng vì nó chứa đựng mức độ nguy hại nhất định nên tôi phải hỏi cho rõ:
- Tại sao lại không cho mở file ở máy khác?
- Có phải vì bạn không muốn người khác "cướp" lấy tài sản của bạn?
Nghe thì cũng hợp lý. Nhưng nếu tài sản ấy của chính bạn, cũng tức code chứa trong file do bạn viết... Vậy bạn cũng thuộc dạng có trình độ rồi ---> Cứ search tìm sẽ có ngay thứ bạn muốn, chế biến tí xíu là xài được thôi
Tôi nói đúng chứ?
Không cho mở ở máy khác là vì đó là file tính lương!
Nói về Lương thì đó là vấn đề tế nhị. (Tài sản = Cũng đúng ).
Nhưng mà về độ nguy hiểm thì làm gì đến mức như Bác nói!
Nếu đã có ý phá hoại thì thiếu gì cách đâu nhất thiết phải cần đến code này!
Em vẫn mong và đợi câu trả lời của Bác và mọi người!
Nói về lương là nó thuộc bí mật, Nhưng nó không là TÀI SẢN
(Trong một cty, chỉ có ông GĐ, KTT và 1 người thừa hành là biết bảng lương toàn cty. Ba người này cứ tưởng chỉ có chúng ta là biết lương của từng người . ---> Nói với bạn đây là SAI LẦM LỚN)
3/
Thôi nói gì đi chăng nữa thì tôi có cảm giác như diễn đàn này không chuộng thành viên mới lắm.
Nhất là với những cái Tên đăng kí Quái Quỷ như tôi !
Mục đích thì xấu hay đẹp là tùy ở bản tính con người
Nói thuyết phục hay không cũng không phải ai cũng nói được
Tất cả những gì tôi nói trong bài viết này là cũng đã có suy nghĩ lắm rồi.
Thôi nói gì đi chăng nữa thì tôi có cảm giác như diễn đàn này không chuộng thành viên mới lắm.
Nhất là với những cái Tên đăng kí Quái Quỷ như tôi !
Mục đích thì xấu hay đẹp là tùy ở bản tính con người
Nói thuyết phục hay không cũng không phải ai cũng nói được
Tất cả những gì tôi nói trong bài viết này là cũng đã có suy nghĩ lắm rồi.
Ôi! Trời ơi!
Đúng là bó tay với Bác!
Thanks you Bác!
Không cho mở ở máy khác là vì đó là file tính lương!
Nói về Lương thì đó là vấn đề tế nhị. (Tài sản = Cũng đúng ).
Nhưng mà về độ nguy hiểm thì làm gì đến mức như Bác nói!
Nếu đã có ý phá hoại thì thiếu gì cách đâu nhất thiết phải cần đến code này!
Em vẫn mong và đợi câu trả lời của Bác và mọi người!
Không ai kỳ thị gì cả đâu bạn à! Diễn đàn này thiếu gì nick kỳ quái, có ai nói gì đâu
Chỉ là liên quan đến vấn đề nhạy cảm nên phải cẩn thận, nếu không sẽ có ngày người ta lại đổ thừa GPE dạy người ta chuyện tầm bậy tầm bạ!
Tks Các Bác nhé!
Bài 2 sở dĩ em chưa áp dụng là bởi vì nghe đến SaveAs là Em cảm thấy chưa đc thoải mái bởi vì nếu làm vậy file mới xlsx sẽ mất code còn file cũ xlsb hay xls thì vẫn còn.
Có thể em nói sai vì em chưa hiểu
FileFormat:=51
là gì.
Thì chính thế nên bác Hải mới để nghị bạn Save As
Ý là bạn tự mình viết code cho nó Save As thành xlsx, đồng thời xóa luôn file gốc ---> Nói chung là code nó làm, có phải bạn làm bằng tay đâu mà không thoải mái
Ẹc... Ẹc...
Thì chính thế nên bác Hải mới để nghị bạn Save As
Ý là bạn tự mình viết code cho nó Save As thành xlsx, đồng thời xóa luôn file gốc ---> Nói chung là code nó làm, có phải bạn làm bằng tay đâu mà không thoải mái
Ẹc... Ẹc...
Tks Các Bác nhé!
Bài 2 sở dĩ em chưa áp dụng là bởi vì nghe đến SaveAs là Em cảm thấy chưa đc thoải mái bởi vì nếu làm vậy file mới xlsx sẽ mất code còn file cũ xlsb hay xls thì vẫn còn. Có thể em nói sai vì em chưa hiểu
FileFormat:=51
là gì.
Bạn cứ vào cửa sổ VBE, gõ đâu đó cái này ThisWorkbook.SaveAs, bôi đen nội dung vừa gõ rồi nhấn F1, tại hàng mô tả về FileFormat, bạn sẽ nhìn thấy một danh mục XlFileFormat. Click vào đó là bạn có thể biết tất cả về mấy con số này thôi mà.
Còn câu lệnh xóa file thì chỉ là như vầy thôi mà: Kill "Đường dẫn\Tên file"
Ủa quái! Em không thể không thắc mắc đc là vì!
SaveAs sang đuôi khác thì nó sẽ tạo thêm file!
Như vậy code sẽ tự xóa ở file mới... còn file gốc của nó nữa... vẫn nguyên phải không ạ?
Nếu mở tiếp file gốc nên mà vẫn giữ nguyên code saveas "Tên File" thì lại xếp đè file mới kia sao?
Có phải dùng FileFormat:=51 thì code savesAs sẽ thực hiện trên file gốc luôn không? (tất cả chỉ có 1 file)
Hix hơi loằng ngoằng Bác Hiểu ý em chứ!
Ủa quái! Em không thể không thắc mắc đc là vì!
SaveAs sang đuôi khác thì nó sẽ tạo thêm file!
Như vậy code sẽ tự xóa ở file mới... còn file gốc của nó nữa... vẫn nguyên phải không ạ?
Nếu mở tiếp file gốc nên mà vẫn giữ nguyên code saveas "Tên File" thì lại xếp đè file mới kia sao?
Có phải dùng FileFormat:=51 thì code savesAs sẽ thực hiện trên file gốc luôn không? (tất cả chỉ có 1 file)
Hix hơi loằng ngoằng Bác Hiểu ý em chứ!
Cần gì phải đau khổ đến thế chứ, muốn xây thì khó chứ đập ra thì nhanh lắm
PHP:
Sub Xoa_Modules()
Dim x
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents.Remove .VBComponents(x)
Next x
End With
End Sub
Còn việc Saveas thì có thể dùng thêm dòng lệnh Application.displayalerts=False để lưu đè lên file gốc rồi mà, đâu cần phải xoá nữa
Nếu bạn biết viết code rồi thì cái này đơn giản mà
Còn việc Saveas thì có thể dùng thêm dòng lệnh Application.displayalerts=False để lưu đè lên file gốc rồi mà, đâu cần phải xoá nữa
Nếu bạn biết viết code rồi thì cái này đơn giản mà
Vấn đề là với mỗi loại file nó có phần mở rộng khác nhau mà anh. Chẳng hạn, file gốc là Test.xlsm, sau khi SaveAs thì nó thành Test.xlsx chứ nhỉ?!
Theo hướng làm ở trên thì em làm như vầy:
PHP:
Sub Test()
Application.DisplayAlerts = False
ThisWorkbook.SaveAs "C:\Test.xlsx", 51
Application.DisplayAlerts = True
Kill "C:\Test.xlsm"
End Sub
Cần gì phải đau khổ đến thế chứ, muốn xây thì khó chứ đập ra thì nhanh lắm
PHP:
Sub Xoa_Modules()
Dim x
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents.Remove .VBComponents(x)
Next x
End With
End Sub
Còn việc Saveas thì có thể dùng thêm dòng lệnh Application.displayalerts=False để lưu đè lên file gốc rồi mà, đâu cần phải xoá nữa
Nếu bạn biết viết code rồi thì cái này đơn giản mà
Sub DeleteAllCodes()
Dim x
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
If .VBComponents(x).Type <> 100 Then
.VBComponents.Remove .VBComponents(x)
Else
With .VBComponents(x).CodeModule
.DeleteLines 1, .CountOfLines
End With
End If
Next x
End With
End Sub
Code cũng hơi độc hại nên em tính cất lại chút ít. Em viết thế này
PHP:
Sub Xoa_Code()
Dim x As Integer
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents(x).CodeModule.DeleteLines 1, _
.VBComponents(x).CodeModule.CountOfLines
.VBComponents.Remove .VBComponents(x)
Next x
End With
End Sub
Đúng rồi! Cám ơn Bác nhé!
Em cũng đang thắc mắc vấn đề này từ lúc code của Thầy Ndu cơ.
Thật ra đến thời điểm này Em cũng chưa test 1 trường hợp nào trong bài này cả.
Nên có post nên sợ các Bác bảo lười.
VBA thì có rất nhiều trong sheet như Bác nói, This wordbook nữa.
module,UserForm,class v.v...
Tóm lại là xóa sạch...
Cái này E sẽ thử nó!
Anh ơi Code độc hại nên em không muốn up lên toàn bộ, chỉ sợ người dùng lạm dụng thôi
Em viết thế này:
PHP:
Sub Xoa_Code()
Dim x As Integer
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents(x).CodeModule.DeleteLines _
1, .VBComponents(x).CodeModule.CountOfLines
.VBComponents.Remove .VBComponents(x)
Next x
End With
End Sub
Theo tôi nghĩ, code dạng này, theo tác giả là không cho xem code nên mới xóa, thì OK, nhưng nếu người ta không để chế độ tự động chạy macro (macro setting) thì cũng chẳng có gì xảy ra.
Mặt khác, nếu ta giấu code, đặt password cho VBA cũng không là vấn đề. Nếu người muốn thấy code của mình, tức là người đó cũng hiểu biết và thậm chí hiểu biết rất rõ về VBA thì không xóa được với họ đâu, họ không cho chạy macro, rồi họ bẻ khóa (diễn đàn nói nhiều về việc này), thì code cũng sẽ lộ ra ngay trước khi code xóa VBA thực hiện!
Nên tôi nghĩ hướng dẫn thì ta cứ hướng dẫn, chẳng ngại ngùng gì! Người không biết chẳng ai thèm quan tâm đến code, người quá hiểu biết thì có xóa, giấu, cũng không được, chỉ có giấu người dỡ dỡ ương ương thôi.
Nên tôi nghĩ hướng dẫn thì ta cứ hướng dẫn, chẳng ngại ngùng gì! Người không biết chẳng ai thèm quan tâm đến code, người quá hiểu biết thì có xóa, giấu, cũng không được, chỉ có giấu người dỡ dỡ ương ương thôi.
Ác cái là những thành phần "hơi hơi biết" lại thích phá hoại
Tóm lại: Thà không biết thì thôi, biết càng nhiều cũng càng tốt... Còn "dỡ dỡ ương ương" thường lại hay thích làm những chuyện.. "ương ương dỡ dỡ".
Nói cho cùng, mấy "trò chơi" này chẳng được tích sự gì đối với người mới học VBA ---> Dành thời gian nghiên cứu cái khác tốt hơn
Sub DeleteAllCodes()
Dim x
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
If .VBComponents(x).Type <> 100 Then
.VBComponents.Remove .VBComponents(x)
Else
With .VBComponents(x).CodeModule
.DeleteLines 1, .CountOfLines
End With
End If
Next x
End With
End Sub
Tks Bác Nhiêù!
Nhưng Có lẽ chưa fai là Ngon 100% Bác àh!
Nêú pássword VBA thì code trên cũng không có tác dụng phải không ạ?
Có cách nào Remove cả páss vba rôì mơí xóa tât cả không?
Tks Bác Nhiêù!
Nhưng Có lẽ chưa fai là Ngon 100% Bác àh!
Nêú pássword VBA thì code trên cũng không có tác dụng phải không ạ?
Có cách nào Remove cả páss vba rôì mơí xóa tât cả không?
Ôi! Bác hiêủ lâm y Em rôì!
Nêú là file của ngươì khác khi đătj pás vba thj sao mjnh có thêr chèn code đó vào đc hả Bác.
Chỉ có file của mình và mình biêts pás thi moi chèn dc code vào chu'.
Vi du em tao 1 file co vba va trong do co code xoa toàn bô nay! Nhung khi Em dat páss thi code xoa toan bo se vô dụng.
Ý E là vây? Chú khéo chôngs gì dâu!
Bác nghi có dúng không ạ! Có lẽ Bác vôi trả loi quá! hic!
Ôi! Bác hiêủ lâm y Em rôì!
Nêú là file của ngươì khác khi đătj pás vba thj sao mjnh có thêr chèn code đó vào đc hả Bác.
Chỉ có file của mình và mình biêts pás thi moi chèn dc code vào chu'.
Vi du em tao 1 file co vba va trong do co code xoa toàn bô nay! Nhung khi Em dat páss thi code xoa toan bo se vô dụng.
Ý E là vây? Chú khéo chôngs gì dâu!
Bác nghi có dúng không ạ! Có lẽ Bác vôi trả loi quá! hic!
Nghĩa là vầy: Với 1 VBProject được đặt password thì code không chạy anh à! Thành ra cần phải có công đoạn Unlock VBProject trước mới chạy code XÓA CODE
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
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
Em cũng dùng Hexeditor nhưng làm quen tay rồi anh à:
- Ctrl + F
- Gõ CMG, Enter
- Bôi đen chổ cần xóa rồi bấm nút Delete và Save
Xong!
Ẹc... Ẹc... 3s hơi cường điệu nhưng sự thật là rất nhanh
Nghĩa là vầy: Với 1 VBProject được đặt password thì code không chạy anh à! Thành ra cần phải có công đoạn Unlock VBProject trước mới chạy code XÓA CODE
Đúng là trong trường hợp này Bác đã hiểu ý tôi.
Về trường hợp không cho chạy Macro thì chẳng phải bàn làm gì.
Nhưng mà đã nói là cho chạy thì cũng phải chạy 1 cách ngon nghẻ chứ!
Việc tự xóa vba này cũng là 1 trường hợp bảo mật.
Mà đã nói đến bảo mật đến mức phải xóa vba đi thì tất nhiên là phải đặt pass rồi.
Nhưng đặt Pass VBA thì mấy bài viết trên coi như là vô dụng.
E, thấy các Bác nghĩ về bài viết này theo chiều hướng xấu... định giải thích thêm với các BÁc nhưng mà chắc gì các BÁc đã tin
May có BÁc ndu nhìn thấu vấn đề !Ý em hỏi cũng như Bác ndu đã nói đó... lời nói của rất có trọng lượng...
Em cũng dùng Hexeditor nhưng làm quen tay rồi anh à:
- Ctrl + F
- Gõ CMG, Enter
- Bôi đen chổ cần xóa rồi bấm nút Delete và Save
Xong!
Ẹc... Ẹc... 3s hơi cường điệu nhưng sự thật là rất nhanh
Trên mạng có file password.xla (chắc của một cao thủ nước ngoài), mình tìm nó không có CMG thì làm sao? Mình không muốn phá khóa để lấy code, chỉ muốn học cách khóa code như họ. Bạn có biết họ khóa kiểu gì không?
Vấn đề Unprotect Password VBA tôi đã nghiên cứu từ rất lâu rồi mà dường như.. không có cách
Tham khảo các trang web nước ngoài, người ta cũng chỉ có thể dùng phương pháp SendKeys (kiểu như "dạy" cho máy tính cách ta làm bằng tay bằng cách bấm các tổ hợp phím nào đó)
Tuy nhiên, phương pháp dùng SendKeys đôi lúc không ổn định, khi được khi không nên tôi chưa giới thiệu
Nghe đồn rằng có cách dùng hàm API để truy đến các cửa sổ lập trình VBA gì gì đó nhưng tiếc là tôi lại không rành ---> E rằng làm được món này chỉ có thể là siwtom ---> Chở xem
------------------------------------------
Trên mạng có file password.xla (chắc của một cao thủ nước ngoài), mình tìm nó không có CMG thì làm sao? Mình không muốn phá khóa để lấy code, chỉ muốn học cách khóa code như họ. Bạn có biết họ khóa kiểu gì không?
Vấn đề Unprotect Password VBA tôi đã nghiên cứu từ rất lâu rồi mà dường như.. không có cách
Tham khảo các trang web nước ngoài, người ta cũng chỉ có thể dùng phương pháp SendKeys (kiểu như "dạy" cho máy tính cách ta làm bằng tay bằng cách bấm các tổ hợp phím nào đó)
Tuy nhiên, phương pháp dùng SendKeys đôi lúc không ổn định, khi được khi không nên tôi chưa giới thiệu
Nghe đồn rằng có cách dùng hàm API để truy đến các cửa sổ lập trình VBA gì gì đó nhưng tiếc là tôi lại không rành ---> E rằng làm được món này chỉ có thể là siwtom ---> Chở xem
------------------------------------------
Cái này để mình bàn trong 1 dịp khác nha anh (vi phạm nội quy đấy)
Trời ơi! Lợi hại quá, password là cái quỷ gì nó cũng remove tuốt
Ghê gớm hơn nữa là:
- Tôi tạo 1 file khác có pass VBA
- Tiếp theo mở file của siwtom lên đồng thời với file mới vừa tạo rồi nhấn nút Đánh tráo
- Kết quả nhận được là: "cánh cửa" đã được mở cho cả 2 file luôn
- Thử nghiệm tiếp trên 3, 4 file có password, cứ chạy code của siwtom là xem như "mời vào nhà!"
-------------------
Anh đúng là hacker siêu hạng
Trời ơi! Lợi hại quá, password là cái quỷ gì nó cũng remove tuốt
Ghê gớm hơn nữa là:
- Tôi tạo 1 file khác có pass VBA
- Tiếp theo mở file của siwtom lên đồng thời với file mới vừa tạo rồi nhấn nút Đánh tráo
- Kết quả nhận được là: "cánh cửa" đã được mở cho cả 2 file luôn
- Thử nghiệm tiếp trên 3, 4 file có password, cứ chạy code của siwtom là xem như "mời vào nhà!"
-------------------
Anh đúng là hacker siêu hạng
Phát hiện thêm 1 chuyện nữa: Sau khi gọi hết tất cả các Add-Ins của MS lên (đương nhiên mấy Add-Ins này đều có Pass). Sau đó chạy code của siwtom thì toàn bộ các Add-Ins đều "mở cửa" ---> Xem code thoải mái Quá sốc!
----------------
Ẹ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)
Phát hiện thêm 1 chuyện nữa: Sau khi gọi hết tất cả các Add-Ins của MS lên (đương nhiên mấy Add-Ins này đều có Pass). Sau đó chạy code của siwtom thì toàn bộ các Add-Ins đều "mở cửa" ---> Xem code thoải mái Quá sốc!
----------------
Ẹ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)
Nếu sốc thật thì cũng dể hiểu thôi. Không phải vô cớ mà chuyện đánh tráo hàm này là một trong những món "đặc sản" của hacker và rootkit. Họ là những người rất am tường về system, hiểu cơ cấu và cách thức hoạt động của system nên họ có thể đột nhập vào system để làm mưa làm gió.
Ngay như đột nhập vào một căn nhà có hệ thống cảnh báo chẳng hạn. Người thường thì không biết cách nhưng người am tường thì biết vào đường nào. Cửa chính, phụ? Qua đường hệ thống thông gió? Chỗ nào là điểm yếu của căn nhà? Vào rồi thì do am tường về các hệ thống cảnh báo nên họ biết phải "tắt" cái gì, tắt ở đâu v...v
Còn về "thuật toán" thì đơn giản thôi.
Giả dụ ta có ông A (system Windows) trực. Khi khách hàng gọi điện tới đặt ông sửa ống nước chẳng hạn (process gọi hàm Windows - SuaOngNuoc) thì ông A "đi" tới bảng ghi số điện thoại và đọc số của ông sửa ống nước (mỗi ngày có 1 ông khác với số khác - tương đương với mỗi lần DLL được load vào RAM thì nó nằm ở một địa chỉ khác), sau đó gọi cho ông thợ (nhẩy tới địa chỉ của hàm) và "kích hoạt", "cử" ông thợ đi làm (thực hiện code ở địa chỉ vừa nhẩy tới).
Thế bây giờ nếu ta "lén" sửa lại số điện thoại được ghi trên bảng và thay vào đó ghi số của nhân viên của ta thì sao? Thì ông A sẽ gọi cho nhân viên của ta và "cử" nhân viên củ ta đi làm, thế thôi.
Phát hiện thêm 1 chuyện nữa: Sau khi gọi hết tất cả các Add-Ins của MS lên (đương nhiên mấy Add-Ins này đều có Pass). Sau đó chạy code của siwtom thì toàn bộ các Add-Ins đều "mở cửa" ---> Xem code thoải mái Quá sốc!
----------------
Ẹ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)
Với cái code này mở nhấp nháy sau cú click (chắc lẹ hơn 3s) mà lại coi tất cả các file đang mở, kể cả addins, ("thấy gúm quá") 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!
Mình không hiểu code này gọi hàm (thủ tục) kiểu gì? Đâu thấy call Hook, chỉ là một thông báo!
(Giống kiểu phát ngôn gây "sốc" hoặc là thần chú gì đó?)
Bạn nào giải thích giùm!
Mình không hiểu code này gọi hàm (thủ tục) kiểu gì? Đâu thấy call Hook, chỉ là một thông báo!
(Giống kiểu phát ngôn gây "sốc" hoặc là thần chú gì đó?)
Bạn nào giải thích giùm!
Hàm Hook này là dạng boolean luôn trả về TRUE khi hoàn tất thủ tục, mở đầu Hook = False và kết thúc hàm là Hook = True
Theo em nghĩ, Khi ta dùng IF HOOK THEN tức là ta đã "gián tiếp" gọi hàm đó, dĩ nhiên nó phải kiểm tra HOOK và từ đó HOOK chạy từ False rồi thực hiện thủ tục, sau cùng trả về TRUE.
Mã:
Public Function Hook() As Boolean
Dim TmpBytes(0 To 5) As Byte
Dim p As Long
Dim OriginProtect As Long
[COLOR=#ff0000][B]Hook = False[/B][/COLOR]
'........................................
[B][COLOR=#0000cd]Hook = True[/COLOR][/B]
End If
End If
End Function
Hàm Hook này là dạng boolean luôn trả về TRUE khi hoàn tất thủ tục, mở đầu Hook = False và kết thúc hàm là Hook = True
Theo em nghĩ, Khi ta dùng IF HOOK THEN tức là ta đã "gián tiếp" gọi hàm đó, dĩ nhiên nó phải kiểm tra HOOK và từ đó HOOK chạy từ False rồi thực hiện thủ tục, sau cùng trả về TRUE.
Mã:
Public Function Hook() As Boolean
Dim TmpBytes(0 To 5) As Byte
Dim p As Long
Dim OriginProtect As Long
[COLOR=#ff0000][B]Hook = False[/B][/COLOR]
'........................................
[B][COLOR=#0000cd]Hook = True[/COLOR][/B]
End If
End If
End Function
Mình không hiểu code này gọi hàm (thủ tục) kiểu gì? Đâu thấy call Hook, chỉ là một thông báo!
(Giống kiểu phát ngôn gây "sốc" hoặc là thần chú gì đó?)
Bạn nào giải thích giùm!
Tầm trình độ của chúng ta thường hay viết khác:
- Viết code cho Sub Hook (chứ không phải Function)
- Dùng 1 biến public chk kiểu Boolean để kiểm tra xem Sub Hook đã chạy hoàn tất chưa
- Xong, viết 1 Sub khác cho gọi sub Hook, đồng thơi kiểm tra biến chk, nếu chk=TRUE thì sẽ làm việc khác
Mã:
Public chk as Boolean
Sub Hook()
If.... gì gì đo then
chk = True
End If
End Sub
Sub Main
Call Hook
If chk then
'Làm việc khac
End If
End Sub
Tuy nhiên, các nhà lập trình chuyên nghiệp thường hay viết kiểu khác: Thay đổi Sub Hook thành Function Hook và Function này trả về giá trị kiểu Boolean luôn.
Vậy nếu code trong Hook hoàn tất thì hàm trả về kết quả = TRUE và ngược lại
Cách này có cái tiện là khỏi cần phải qua biến tạm dạng Public
-------------------
Với HOOK là một hàm trả về giá trị BOOLEAN, còn một đằng khai báo biến HOOK là một BOOLEAN, 2 trường hợp này hoàn toàn khác nhau.
Với hàm HOOK nó có tính Public, còn trong cái SUB của anh, biến HOOK chỉ là chạy "nội tại" mà đã là "nội tại" thì nó sẽ chạy trước, public nó chạy sau nếu nội tại không thỏa, tức chạy hết SUB nó sẽ hết tác dụng khi END SUB. Mặt khác, với HOOK trong SUB của anh nó chưa định giá trị TRUE hoặc FALSE cho nó vì vậy mặc định của biến này luôn là FALSE.
Thí nghiệm như vầy, cũng trên file đó, anh đặt Dim Hook As Boolean ở trên cùng rồi chạy thủ tục dưới đây như sau:
Mã:
[COLOR=#ff0000][B]Dim Hook As Boolean[/B][/COLOR]
'-----------------------------
Sub test()
If Hook Then
MsgBox "VBA Password is Removed!", vbInformation, "Excel Tool"
End If
End Sub
Cho chạy Sub test bảo đảm với anh nó không thông báo gì cả!
Từ thí nghiệm này cho thấy, khi chạy thủ tục, nếu trùng tên Hàm/Sub nó sẽ thông báo lỗi, nếu Hàm trùng tên Biến, nó sẽ xét theo Biến.
Với cái code này mở nhấp nháy sau cú click (chắc lẹ hơn 3s) mà lại coi tất cả các file đang mở, kể cả addins, ("thấy gúm quá") 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!
Thât Bâ't ngo,Tks Bác siwtom nhiêù nhé!
Đúng là khôg có gì là không thê?!
Em nghi bài của Bác Nghĩa chăc là không thê thuc hiên = code dc rôì... vì de chay dc code thì file do' fai ActiveWindow thì code moi hoat dong dươc chú...
Theo em hieu la file chưa nhâpj pás Open thj ActiveWindow vân là Flase thi code chua thêr hoat dông dc dúng không ạ!
Thât Bâ't ngo,Tks Bác siwtom nhiêù nhé!
Đúng là khôg có gì là không thê?!
Em nghi bài của Bác Nghĩa chăc là không thê thuc hiên = code dc rôì... vì de chay dc code thì file do' fai ActiveWindow thì code moi hoat dong dươc chú...
Theo em hieu la file chưa nhâpj pás Open thj ActiveWindow vân là Flase thi code chua thêr hoat dông dc dúng không ạ!
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ỉ?
Mình không hiểu code này gọi hàm (thủ tục) kiểu gì? Đâu thấy call Hook, chỉ là một thông báo!
(Giống kiểu phát ngôn gây "sốc" hoặc là thần chú gì đó?)
Bạn nào giải thích giùm!
Function [COLOR=#ff0000]SheetExist[/COLOR](WorkSheetName As String) [COLOR=#ff0000]As Boolean[/COLOR]
On Error Resume Next
SheetExist = Not Sheets(WorkSheetName) Is Nothing
End Function
Sub Main
If [COLOR=#ff0000]SheetExist("ABC") [/COLOR]then
MsgBox "Sheet 'ABC' này ton tai"
End If
End Sub
Em không nghĩ là anh lại thắc mắc chuyện đơn giản này
Ẹc... Ẹc...
Function [COLOR=#ff0000]SheetExist[/COLOR](WorkSheetName As String) [COLOR=#ff0000]As Boolean[/COLOR]
On Error Resume Next
SheetExist = Not Sheets(WorkSheetName) Is Nothing
End Function
Sub Main
If [COLOR=#ff0000]SheetExist("ABC") [/COLOR]then
MsgBox "Sheet 'ABC' này ton tai"
End If
End Sub
Em không nghĩ là anh lại thắc mắc chuyện đơn giản này
Ẹc... Ẹc...
Lại hiểu sai ý của mình rồi!
Nếu như trước loạt bài này, muốn viết code Main trên thì mình phải viết là
Mã:
Sub Main()
[COLOR=#ff0000]SheetExist ("ABC") [/COLOR]' Hoac Call SheetExist("ABC")
If SheetExist("ABC") Then
MsgBox "Sheet 'ABC' này ton tai"
End If
End Sub
Lại hiểu sai ý của mình rồi!
Nếu như trước loạt bài này, muốn viết code Main trên thì mình phải viết là
Mã:
Sub Main()
[COLOR=#ff0000]SheetExist ("ABC") [/COLOR]' Hoac Call SheetExist("ABC")
If SheetExist("ABC") Then
MsgBox "Sheet 'ABC' này ton tai"
End If
End Sub
Anh viết vậy là... quá thừa rồi còn gì SheetExist là 1 Function chứ đâu phải 1 Sub ---> Nếu nó chạy thì nó phải trả về giá trị gì đó và ta phải "nhận" lấy để tính toán xem sẽ làm gì tiếp
Còn cách anh vừa viết là anh đã tự xem SheetExist là 1 Sub (không phải Function) và giá trị trả về của nó anh cũng không thèm đếm xỉa đến luôn....
Dòng đỏ ở trên chẳng biết để làm cái gì nữa, có chăng thì vầy mới hợp lý:
Mã:
Sub Main()
Dim bChk as Boolean
bChk = SheetExist ("ABC")
If bChk Then
MsgBox "Sheet 'ABC' này ton tai"
End If
End Sub
Nói cho cùng thì cũng y chang cách em đã viết ở bài 57 thôi
Ẹc... Ẹc... (ngộ hen.. tự nhiên anh lại théc méc rất.. kỳ cục...)
Anh viết vậy là... quá thừa rồi còn gì SheetExist là 1 Function chứ đâu phải 1 Sub ---> Nếu nó chạy thì nó phải trả về giá trị gì đó và ta phải "nhận" lấy để tính toán xem sẽ làm gì tiếp
Còn cách anh vừa viết là anh đã tự xem SheetExist là 1 Sub (không phải Function) và giá trị trả về của nó anh cũng không thèm đếm xỉa đến luôn....
Dòng đỏ ở trên chẳng biết để làm cái gì nữa, có chăng thì vầy mới hợp lý:
Mã:
Sub Main()
Dim bChk as Boolean
bChk = SheetExist ("ABC")
If bChk Then
MsgBox "Sheet 'ABC' này ton tai"
End If
End Sub
Nói cho cùng thì cũng y chang cách em đã viết ở bài 57 thôi
Ẹc... Ẹc... (ngộ hen.. tự nhiên anh lại théc méc rất.. kỳ cục...)
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 và 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... )..)! ^^
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 và 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.
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!
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 đó?
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
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
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 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
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!
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!
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 à!
Ẹ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)
Đươ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é.
- 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 ở
- 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!
- 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 ở
Theo như clip Sư phụ gửi không biết dùng lệnh gì trong việc "xóa sạch hết từ CMG đến GC" (quét vùng và nhấn Delete?) thì vùng chọn đó thay thế bằng "............",
Em quét vùng và nhấn Delete thì xóa mất hết luôn, lưu lại mở ra thì báo mất code trong VBE luôn (báo lỗi như bài viết của Hong.Van). Nếu thay tất cả các ký tự vùng đó (từ CMG đến GC) bằng các dấu "........" thì được. Ở đây em đang hỏi lý do Sư phụ làm được nhanh như thế ? em cũng mong mở được trong vòng 3s ẹc.. ẹc ..
View attachment 91390
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!
Thế bạn trở thành dũng sỹ diệt code rồi, ha ha...
Nói vậy chớ xóa hết từ chữ "CMG" đến hết nội dung của GC, khi nào thành một loạt dấu .......(chấm) là được.
Theo như clip Sư phụ gửi không biết dùng lệnh gì trong việc "xóa sạch hết từ CMG đến GC" (quét vùng và nhấn Delete?) thì vùng chọn đó thay thế bằng "............",
Em quét vùng và nhấn Delete thì xóa mất hết luôn, lưu lại mở ra thì báo mất code trong VBE luôn (báo lỗi như bài viết của Hong.Van). Nếu thay tất cả các ký tự vùng đó (từ CMG đến GC) bằng các dấu "........" thì được. Ở đây em đang hỏi lý do Sư phụ làm được nhanh như thế ? em cũng mong mở được trong vòng 3s ẹc.. ẹc ..
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!
Thì cũng y chang như vừa làm thôi
Chú ý:
- Ctrl + F
- Đặt con trỏ chuột về phía bên phải số 47 rồi bấm Delete 3 phát
- Xong, đặt chuột vào ô vuông màu xanh, gõ CMG và bấm nút Find
Nói chung cứ chú ý kỹ thao tác tôi làm trong video clip là được rồi
Em cảm ơn các Thầy & anh chị!
Trước khi có bài gỡ PW của anh thì em đã dùng chương trình Office Password Recovery Toolbox, chương trình này chỉ gỡ PW BAV thông thường chứkg gỡ thằng Unviewable được!
Em có nghiên cứu một số trang như http://www.pcreview.co.uk/forums/help-vba-password-lost-t3161183.html
...
Nhưng chưa được....
Có lẽ có nhiều nguyên do như chương trình Hexeditor của em dùng Free nên thiếu các chức năng, ví dụ như chương trình của Thầy Ndu khi bấm Ctrl+F nó ra cái khung khác, của em cái khung khác ...
--------
Nhân tiện đây cho em hỏi: những File Excel đã chuyển qua .exe thì có thể chuyển về .xls được không?
Em cảm ơn!
Chào anh!
Em kg sử dụng và tạo File .exe. Vì có tạo thì em fải thủ trước 1 File dự trữ rồi
Tình hình là như thế này, trước đây em có xem 1 File .exe chạy chương trình kế toán của 1 người bạn làm ở cty khác, em muốn bổ sung thêm một số đoạn code mà em sưu tầm được vào chương trình này. Vì thế em hỏi muốn chuyển từ File .exe về File .xls.
Sáng nay em có hỏi nó để lấy fần mềm này, nhưng chắc nó sợ lộ thông tin số liệu và sếp nó, nên nó kg muốn chuyển.
Em cảm ơn!
' ANALYSIS TOOLPAK - Excel AddIn
' The following function declarations provide interface between VBA and ATP XLL.
' These variables point to the corresponding cell in the Loc Table sheet.
Const XLLNameCell = "B8"
Const MacDirSepCell = "B3"
Const WinDirSepCell = "B4"
Const LibPathWinCell = "B10"
Const LibPathMacCell = "B11"
Dim DirSep As String
Dim LibPath As String
Dim AnalysisPath As String
Dim WorkbookName As String
Dim FunctionIDs(37, 0 To 1)
Private Function GetMacroRegId(FuncText As String) As String
For i = LBound(FunctionIDs) To UBound(FunctionIDs)
If (LCase(FunctionIDs(i, 0)) = LCase(FuncText)) Then
If (Not (IsError(FunctionIDs(i, 1)))) Then
GetMacroRegId = FunctionIDs(i, 1)
Exit Function
End If
End If
Next i
End Function
'Procedures
Sub Anova1(inprng As Variant, Optional outrng As Variant, Optional grouped As Variant, Optional labels As Variant, Optional alpha As Variant)
xAnova1 = Application.Run(GetMacroRegId("fnAnova1"), inprng, outrng, grouped, labels, alpha)
End Sub
Sub Anova1Q(Optional inprng As Variant, Optional outrng As Variant, Optional grouped As Variant, Optional labels As Variant, Optional alpha As Variant)
xAnova1Q = Application.Run(GetMacroRegId("fnAnova1Q"), inprng, outrng, grouped, labels, alpha)
End Sub
Sub Anova2(inprng As Variant, Optional outrng As Variant, Optional sample_rows As Variant, Optional alpha As Variant)
xAnova2 = Application.Run(GetMacroRegId("fnAnova2"), inprng, outrng, sample_rows, alpha)
End Sub
Sub Anova2Q(Optional inprng As Variant, Optional outrng As Variant, Optional sample_rows As Variant, Optional alpha As Variant)
xAnova2Q = Application.Run(GetMacroRegId("fnAnova2Q"), inprng, outrng, sample_rows, alpha)
End Sub
Sub Anova3(inprng As Variant, Optional outrng As Variant, Optional labels As Variant, Optional alpha As Variant)
xAnova3 = Application.Run(GetMacroRegId("fnAnova3"), inprng, outrng, labels, alpha)
End Sub
Sub Anova3Q(Optional inprng As Variant, Optional outrng As Variant, Optional labels As Variant, Optional alpha As Variant)
xAnova3Q = Application.Run(GetMacroRegId("fnAnova3Q"), inprng, outrng, labels, alpha)
End Sub
Sub Descr(inprng As Variant, Optional outrng As Variant, Optional grouped As Variant, Optional labels As Variant, Optional summary As Variant, Optional ds_large As Variant, Optional ds_small As Variant, Optional confid As Variant)
xDescr = Application.Run(GetMacroRegId("fnDescr"), inprng, outrng, grouped, labels, summary, ds_large, ds_small, confid)
End Sub
Sub DescrQ(Optional inprng As Variant, Optional outrng As Variant, Optional grouped As Variant, Optional labels As Variant, Optional summary As Variant, Optional ds_large As Variant, Optional ds_small As Variant, Optional confid As Variant)
xDescrQ = Application.Run(GetMacroRegId("fnDescrQ"), inprng, outrng, grouped, labels, summary, ds_large, ds_small, confid)
End Sub
Sub Expon(inprng As Variant, Optional outrng As Variant, Optional damp As Variant, Optional stderrs As Variant, Optional chart As Variant, Optional labels As Variant)
xExpon = Application.Run(GetMacroRegId("fnExpon"), inprng, outrng, damp, stderrs, chart, labels)
End Sub
Sub ExponQ(Optional inprng As Variant, Optional outrng As Variant, Optional damp As Variant, Optional stderrs As Variant, Optional chart As Variant, Optional labels As Variant)
xExponQ = Application.Run(GetMacroRegId("fnExponQ"), inprng, outrng, damp, stderrs, chart, labels)
End Sub
Sub Fourier(inprng As Variant, Optional outrng As Variant, Optional inverse As Variant, Optional labels As Variant)
xFourier = Application.Run(GetMacroRegId("fnFourier"), inprng, outrng, inverse, labels)
End Sub
Sub FourierQ(Optional inprng As Variant, Optional outrng As Variant, Optional inverse As Variant, Optional labels As Variant)
xFourierQ = Application.Run(GetMacroRegId("fnFourierQ"), inprng, outrng, inverse, labels)
End Sub
Sub Ftestv(inprng1 As Variant, inprng2 As Variant, Optional outrng As Variant, Optional labels As Variant, Optional alpha As Variant)
xFtestv = Application.Run(GetMacroRegId("fnFtestV"), inprng1, inprng2, outrng, labels, alpha)
End Sub
Sub FtestvQ(Optional inprng1 As Variant, Optional inprng2 As Variant, Optional outrng As Variant, Optional labels As Variant, Optional alpha As Variant)
xFtestvQ = Application.Run(GetMacroRegId("fnFtestVQ"), inprng1, inprng2, outrng, labels, alpha)
End Sub
Sub Histogram(inprng As Variant, Optional outrng As Variant, Optional binrng As Variant, Optional pareto As Variant, Optional chartc As Variant, Optional chart As Variant, Optional labels As Variant)
xHistogram = Application.Run(GetMacroRegId("fnHistogram"), inprng, outrng, binrng, pareto, chartc, chart, labels)
End Sub
Sub HistogramQ(Optional inprng As Variant, Optional outrng As Variant, Optional binrng As Variant, Optional pareto As Variant, Optional chartc As Variant, Optional chart As Variant, Optional labels As Variant)
xHistogramQ = Application.Run(GetMacroRegId("fnHistogramQ"), inprng, outrng, binrng, pareto, chartc, chart, labels)
End Sub