暱稱: 阿吉 頭銜: 不恥下問,不斷學習,才會進步
版主  
- 帖子
- 647
- 主題
- 190
- 精華
- 24
- 積分
- 1037
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- Office 2010 ; OOO3.0 ; Google
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 竹南
- 註冊時間
- 2010-5-2
- 最後登錄
- 2022-6-24
  
|
本帖最後由 HUNGCHILIN 於 2012-1-11 21:39 編輯
這一篇是一個很重要的文章
當有能力,突破巨集安全性時,我們先把EXCEL VBP 作成"專案不可檢視"
當有人破解 VBP "專案不可檢視"時,開啟時檔案先判斷vbe是否保護,如果被破解開,就刪除自己或模組
如何判斷一個檔案內是否包含宏
Sub Check_VBA_Exist()
Dim fd As FileDialog
Dim FFs As FileDialogFilters
Dim stFileName As String
Dim vaItem
Dim VBC As Object
Dim HasCode As Boolean
Dim wb As Workbook
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
Set FFs = .Filters
With FFs
.Clear
.Add "Excel文件", "*.xls;*.xla"
End With
.AllowMultiSelect = True
If .Show = -1 Then
For Each vaItem In .SelectedItems
Application.EnableEvents = False
Application.ScreenUpdating = False
Set wb = Workbooks.Open(vaItem)
HasCode = False
' 当档案有工程密码是,出错 , amended on 30 Jul 2006
If wb.VBProject.Protection = 1 Then ' 判斷vbe是否保護
MsgBox "檔案" & Dir(vaItem) & " VBA 專案被鎖定"
wb.Close 0
' Exit Sub
' End If
Else
For Each VBC In wb.VBProject.VBComponents
If VBC.Type <> 100 Then
HasCode = True: Exit For
ElseIf VBC.CodeModule.CountOfDeclarationLines < VBC.CodeModule.CountOfLines Then
HasCode = True: Exit For
End If
Next
If HasCode = True Then
MsgBox "檔案" & Dir(vaItem) & " 有宏"
Else
MsgBox "檔案" & Dir(vaItem) & " 無宏"
End If
wb.Close 0
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
Next vaItem
End If
End With
End Sub
Ref: http://www.officefans.net/cdb/vi ... &extra=page%3D1 |
|