2011-03-08 42 views

回答

2

阅读this answer我发现使用Application.VBE.ActiveVBProject.VBComponent似乎是你想要的。

MSDN forums上提出了一个类似的问题,虽然涉及Visio而不是Excel。我相信你可以相应地调整代码。

更多this SO question问与您的完全相同。尽管这个答案似乎并不涵盖C#...

at the eggheadcafe一个用户建议使用此代码段遍历所有VB-组件:

Sub Test() 
    If bHasMacros(ActiveWorkbook) Then 
    MsgBox ActiveWorkbook.Name & " has macros." 
    End If 
End Sub 

Function bHasMacros(ByRef wkbBook As Workbook) As Boolean 
    Dim cmpComponent As VBIDE.VBComponent 
    For Each cmpComponent In wkbBook.VBProject.VBComponents 
    If cmpComponent.CodeModule.CountOfLines > 1 Then 
     bHasMacros = True 
     Exit Function 
    End If 
    Next cmpComponent 
End Function 
+0

但我的应用程序是在C#。我怎样才能使用这段代码?你能给我建议吗? –

相关问题