Xóa code trong ThisWorkbook (một vài dòng cụ thể) (1 người xem)

Liên hệ QC

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

tuyetbay

Thành viên hoạt động
Tham gia
23/1/08
Bài viết
154
Được thích
179
Xin chào các bác, cho em xin hỏi có thể dùng Macro để xóa code trong ThisWorkbook không. Cụ thể là xóa "Private Sub Workbook_BeforeClose(Cancel As Boolean) .... End" này được không? Xin cảm ơn.
Nếu có ai đã Post bài này rồi thì xin lổi nha, mong các Mod chỉ đường dẫn và xóa bài trong 36 tiếng tới nha! +-+-+-+ -\\/.
 
Chào bạn
Xoá hay thay thế code trong Module thì chắc chắn làm được. Còn trong ThisWorkbook thì mình chưa thử nhưng mình nghĩ là có thể thực hiện được. Bạn tìm đọc bài viết của anh Levanduyet (hình như là "Thao tác với Module") hoặc trang web cá nhân của anh Duyệt.

TDN
 
Upvote 0
Xin lỗi bác Levanduyet nha, nhưng em chưa thấy bài nói về vấn đề này. Mong các bác giúp em được không. Chỉ cần vô hiệu hóa thằng Workbook_BeforeClose thôi. Để khi chạy lệnh cuối cùng không gặp thằng này cản đường cản lối đó mà. Mong giúp đở!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử dùng đoạn code sau: (Chú ý vào Security đánh dấu chọn vào mục Trust access to Visual Basic Project)
Mã:
Sub xoa_thisworkbookcode()
 Dim WB As Workbook
    Set WB = ActiveWorkbook
    With WB.VBProject.VBComponents(1).CodeModule
        .DeleteLines 1, .CountOfLines
    End With
End Sub
 
Upvote 0
Cảm ơn bác nhiều. Bác có thể chọn luôn mục Trust access to Visual Basic Project này bằng code của VBA luôn được không ạ! Để đở phải làm phiền người khác, cứ nhắc người ta chọn vào mục này thì kỳ kỳ làm sau đó....

Em tìm trên diễn đàn có mục nó về Application.SendKeys, em đã thử áp dụng vào như vầy nhưng khi Form1 được chạy thì các Sendkeys kia lại không có tác dụng nhưng khi đặt vào Macro thì lại chạy được? Em không hiểu tại sao xin các bác giải thích giùm?!?
PHP:
Private Sub Workbook_Open()
Application.SendKeys "%{t}{m}{s}" 
Application.SendKeys "%{t}" 
Application.SendKeys "%{v}" 
Application.SendKeys "{ENTER}"
....
UserForm1.show
End Sub
Ngoài cách này còn có cách nào khác không??? Help...me..
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Mình nghĩ dùng SendKeys là cách giải quyết tốt với yêu cầu của bạn.
Để khắc phục tình trạng trên, bạn vào Properties của userform chỉnh ShowModal = false.
 
Upvote 0
Xin cảm ơn bác nhiều nha. Nhưng nó làm cái Form của em mờ đi rồi. Nếu có thêm một dòng lệnh để trở lại cái Form hiện hành thì tuyệt hơn đó.
Một lần nữa xin cảm ơn bác Voda nha! Thanks...Thanks...

:., Các bác ơi có cách nào dùng lện Sendkeys để lấy lại sự hiện hữu của Form không?
Các bác đâu hết rồi!:.,
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn thử Setfocus một đối tượng trên Form xem kết quả như thế nào!
 
Upvote 0
Hiểu .H.i..ể..u... Hiểu "Chết liền"!!!!.
Có phải là cho thực thi một thao tác trên Form đó không. Form của em có một 6 ô Textbox, CommandButton1 và nút Cancel thôi. Dùng để nhập dữ liệu cho ngày làm việc mới đó mà. Vậy bác có thể cho hiển thị dấu nhắc trên Textbox1 được không? Cũng coi như một lệnh thực thi gì đó vậy??
¢y╞∩╧┘♣┌1▲R_333ƒ1B4♠5┴4N3◘ W4Γ«Why»M5 └è♂K○┤Åò7Q±:╢╠tT╡æ¼

Bác Voda ơi không được rồi! Nó vẫn cứ ỳ ra như vậy thôi.
Em nghĩ do thằng Sendkeys chạy chậm hơn so với các dòng lệnh VBA nên không ăn thua gì cả. Mong các bác nghĩ cách khác giúp ạ.
Help..me..Please.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
-Mình nghĩ form lúc đầu hiện mờ đâu có trở ngại gì. Chỉ cần người dùng kích vào, nó sẽ trở lại như cũ. Còn nếu không muốn tình trạng này, bạn có thể chọn vị trí khác nào đó thích hợp để đặt lệnh SendKeys. Ví dụ như cho nó vào form:
Mã:
Private Sub UserForm_Terminate()
    Application.SendKeys "%{t}{m}{s}"
    Application.SendKeys "%{t}"
    Application.SendKeys "%{v}"
    Application.SendKeys "{ENTER}"
End Sub
hoặc cho vào một module, khi chương trình chạy ta xóa luôn module này.
-Còn sự xung đột giữa lệnh SendKeys và các lệnh khác của VBA khác, mình chưa tìm ra cách giải quyết. Mong các bạn cho ý kiến thêm
 
Upvote 0
Em chỉ muốn thằng này "Trust access to Visual Basic Project" được chọn thôi. Vậy không biết có cách nào để chọn thằng này mà không dùng Sendkeys không? Chứ đặt vào Module hay trong Form điều không được. Mục này theo em thì phải mở trước Form cơ mà dùng Sendkeys thì nó lại chạy sau VBA nên mới có "cớ sự như ngày hôm nay".

Chào mọi người, em nghĩ ra cách khắc phục rồi. Chỉ cần dùng Sendkeys chạy một phím tắt để gọi một hàm. Hàm đó có chức năng gọi Form kia trở lại là được rồi. Nhưng ngạc nỗi là không biết lệnh gọi Form là gì? Mong các bác hướng dẫn thêm được không ạ! Thanks..

=========================
Cảm ơn tất cả mọi thành viên trên diễn đàn GPE nhiều nha!
Em làm được rồi! Chỉ có chút rắc rối khi sắp xếp lại trật tự của các quy trình chạy code thôi! Mà do nhiều quá nên không biết phải bắt đầu từ đâu nữa nên mới lâu vậy. Mong mọi người thông cảm nha!
Chúc mọi điều tốt đẹp sẽ đến với diễn đàn này!
Chúc mọi người điều thành công khi lên diễn đàn này!
Thành thật rất cảm ơn tất cả đã nhiệt tình giúp đỡ trong những ngày qua!
Thanks.................
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Cảm ơn tất cả mọi thành viên trên diễn đàn GPE nhiều nha!
Em làm được rồi! Chỉ có chút rắc rối khi sắp xếp lại trật tự của các quy trình chạy code thôi! Mà do nhiều quá nên không biết phải bắt đầu từ đâu nữa nên mới lâu vậy.

Mình cố gắng làm hoài mà vẫn chưa dùng code để chọn tự động được Trust ascess to Visual Basic Project
Mong bạn send cho mình 1 file nhỏ VD về code này được không? Cảm ơn nhiều.
 
Upvote 0
Mình dùng công tác tay thôi bạn ơi. Bạn dùng code SendKeys để gửi phím tắt đi.
PHP:
Sub TrustVBAPr()
Application.SendKeys "%tmst"
Application.SendKeys "%v{Enter}"
End Sub
Thân.
 
Upvote 0
Mình dùng công tác tay thôi bạn ơi. Bạn dùng code SendKeys để gửi phím tắt đi.
PHP:
Sub TrustVBAPr()
Application.SendKeys "%tmst"
Application.SendKeys "%v{Enter}"
End Sub
Thân.
Làm như thế này thì cũng được, Nếu mình mở file thì mình biết mà ấn phím tắt, chứ send file cho nhiều người dùng thì làm sao mà nhắc nhở họ (Ấn phím tắt) cho hết được.
Hiện tại thì chưa biết cách làm tự động chọn "Trust access to Visual Basic Project" nên đành dùng cách thủ công thôi.:wallbash:
 
Upvote 0
Key trong reg:
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM
= 1 -> Trust access to Visual Basic Project
(và 1 key khác tương đương ở nhánh của User hiện thời)
 
Upvote 0
Key trong reg:
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM
= 1 -> Trust access to Visual Basic Project
(và 1 key khác tương đương ở nhánh của User hiện thời)

Dùng Reg cũng là 1 cách hay. Nhưng không biết cách nào để lồng đoạn Reg này vào VBA (để cho nó hoạt động mỗi khi mở file) Workbook_Open
Mong các bạn giúp!
 
Upvote 0
Upvote 0
Upvote 0
Xoá code và thay đổi code trong modul không ah ! chẳn đá động gì đến vấn đề mình nói....hihihi.
 
Upvote 0
Loay hoay cái vụ này mãi, tìm thấy đuwocj cái này trên mạng. Topic này cũng lâu rồi nhưng mình vẫn post lên xem nếu ai có cần thì dùng:
Tham khảo từ http://www.excelguru.ca/node/58/print

Code

Sub CheckVBA_Access()
Dim WSS As Object, strKey As String
Set WSS = CreateObject("WScript.Shell")
'key to modify
strKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & _
Application.Version & "\Excel\Security\AccessVBOM"
'enable access
WSS.RegWrite strKey, 1, "REG_DWORD"
'read the vba project name
MsgBox ActiveWorkbook.VBProject.Name
'disable access
WSS.RegDelete strKey
End Sub

By Ken Puls
Created 2006-08-31 08:23
Code to check access


Code to check access

Function IsVBATrusted() As Boolean
Dim VBC As Object

Application.DisplayAlerts = False
On Error Resume Next
Set VBC = ThisWorkbook.VBProject.VBComponents.Item(1)
On Error Goto 0
Application.DisplayAlerts = True
IsVBATrusted = Not VBC Is Nothing
End Function
 
Upvote 0
Web KT

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

Back
Top Bottom