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

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

现在我的问题是在转换文件之前,我可以知道Excel文件是在C#.netmacrosExcel文件?

阅读这个答案我发现使用Application.VBE.ActiveVBProject.VBComponent似乎是你想要的。

在MSDN论坛上也提到了一个类似的问题,虽然人们关心的是Visio而不是Excel。 我相信你可以相应地调整代码。

在这个SO问题上进一步询问和你一样的问题。 虽然这个答案似乎并没有涵盖C#…

在eggheadcafe上,一个用户build议使用这个代码片段循环遍历所有的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