Board logo

標題: [轉貼] 如何判斷一個檔案內是否包含宏 [打印本頁]

作者: HUNGCHILIN    時間: 2012-1-10 22:46     標題: 如何判斷一個檔案內是否包含宏

本帖最後由 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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)