禁止打开Excel VBE窗口

仔细想了想该方法并没有所谓的防止查看和修改代码的作用,因为只要限制了宏功能或者不信任对VBA工程对象模型的访问就可以限制该功能从而打开VBE窗口。

禁止打开VBE窗口,可以防止查看和修改代码。

运行机理:在打开事件中添加windows监视,一旦VBE打开,就运行VBEwindow过程,并调用CheckVBE_Event过程强制关闭VBE

Thisworkbook模块代码

Private Sub Workbook_BeforeClose(Cancel As Boolean)

vbewin = False

End Sub

Private Sub Workbook_Open()

vbewin = True

VBEwindow

End Sub

Modul模块代码

Public Declare Function GetActiveWindow Lib "user32" () As Long

Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA"_

(ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Public vbewin As Boolean

Sub VBEwindow()

Do While vbewin

DoEvents

Call CheckVBE_Event

Loop

End Sub

Sub CheckVBE_Event()

Dim hwnd As Long

Dim WText As String

Dim L As Long: L = 255

WText = String(255, " ")

hwnd = GetActiveWindow

L = GetClassName(hwnd, WText, L)

WText = Left(WText, L)

If WText = "wndclass_desked_gsk" Then

Application.VBE.CommandBars.FindControl(ID:=752).Execute

End If

End Sub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得...
    浮浮尘尘阅读 21,971评论 6 49
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 之前美军在阿富汗的时候,一名队长带着手下的士兵保护长老团去参加当地穆斯林的一个集会。 阿富汗那地你们也知道,属于没...
    许晨Yolo阅读 522评论 0 2
  • 重踏这座空了许多年的小楼 雕梁破旧,壁画斑驳 满园的荒芜,一楼的萧索 过堂风呜咽着江湖传说 那隔着台前幕后的帘,承...
    卿公子的小酒馆阅读 378评论 27 15
  • 前面我们分析过宝妈卖货时,别人一次活动成交几百个客户,宝妈只能成交几个客户,这是为什么呢? 宝妈卖货的时候,可能会...
    谭昌乾阅读 1,286评论 0 0