如何以编程方式知道excel文件在C#中有宏文件

时间:2011-03-08 06:39:37

标签: c# excel

我有一个2003 excel文件。使用ofc.exe文件我已将2003 excel文件转换为2007 exls文件。

现在我的问题是在转换文件之前我知道excel文件是c#.net中的宏excel文件吗?

1 个答案:

答案 0 :(得分: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