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 ạ?
 
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
 
Upvote 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 ạ?
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
 
Upvote 0
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?
 
Upvote 0
=
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ứ?
 
Upvote 0
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ứ?

Ôi! Trời ơi! -+*/
Đúng là bó tay với Bác!
Thanks you Bác!!$@!!
- Tại sao lại không cho mở file ở máy khá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!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
1/
Không cho mở ở máy khác là vì đó là file tính lương!

Kg cho mở máy khác thì dùng PW trước khi Open

Mặt khác, khi mở file mà người khác không Enable mà Disable thì không thể thấy nội dung trong file sao?

2/
Nói về Lương thì đó là vấn đề tế nhị. (Tài sản = Cũng đúng ).
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/
Nhưng mà về độ nguy hiểm thì làm gì đến mức như Bác nói!
Không ai biết ý định của bạn, nên ngăn ngừa là chuyện bình thường

4/
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!

Đây cũng là một cách!
-------------
Tóm lại cách nói của bạn KHÔNG THUYẾT PHỤC
 
Upvote 0
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.
 
Upvote 0
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.
Bạn đã biết viết code thì câu trả lời bài số 2 không thể giúp bạn giải quyết vấn đề hay sao?
 
Upvote 0
Ô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!
Thế thì cho bạn cái "cần câu"
Mã:
Sub Test()
  With ThisWorkbook.VBProject
    .VBComponents.Remove .VBComponents("Module1")
  End With
End Sub
"câu cá" thế nào là tùy bạn nhé
----------------------------
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 !

.
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ạ!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn đã biết viết code thì câu trả lời bài số 2 không thể giúp bạn giải quyết vấn đề hay sao?

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ì.
 
Upvote 0
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

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...
 
Upvote 0
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...
à! hóa ra dòng lệnh
FileFormat:=51
là xóa file gốc sao? hề hề.. không hiểu nên em mới chưa áp dụng...
Hay đấy! Tks các Bác!
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
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"
 
Lần chỉnh sửa cuối:
Upvote 0
Hề... Hề... hổng phải
FileFormat:=51 <==> FileFormat:=xlOpenXMLWorkbook---> Cũng là thằng em XLSX

Ủ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ứ!
 
Upvote 0
Ủ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ứ!
Tóm lại là bạn cần làm 2 việc:
1. SaveAs file gốc thành file .xlsx (file mới sẽ không còn code nữa).
2. Xóa file gốc đi bằng lệnh Kill.
 
Upvote 0
À đấy! phải thế chứ! thiếu việc 2! =))

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à
 
Upvote 0
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
 
Upvote 0
Web KT
Back
Top Bottom