如何使用C#从Excel工作表中删除VB代码?

有谁知道如何删除所有的 VB代码forms使用C#的Excel工作簿? 此代码不起作用。 它删除第一个(最后一个)VBComponent,但在第二个上升ArgumentException。

VBProject project = workbook.VBProject; int componentsCount = project.VBComponents.Count; for (int i = componentsCount; i >= 1; i--) { VBComponent component = project.VBComponents.Item(i); project.VBComponents.Remove(component); } 

有什么build议么? 🙂

我在山姆的帮助下解决了这个问题。 我怀疑每个Excel工作簿都有一些不可删除的VBComponents,因此而不是删除它们,我们可以清除它们的内容。 它现在有效。 谢谢萨姆。

  VBProject project = workbook.VBProject; for (int i = project.VBComponents.Count; i >= 1; i--) { VBComponent component = project.VBComponents.Item(i); try { project.VBComponents.Remove(component); } catch(ArgumentException) { continue; } } for (int i = project.VBComponents.Count; i >= 1; i--) { VBComponent component = project.VBComponents.Item(i); component.CodeModule.DeleteLines(1, component.CodeModule.CountOfLines); } 

之后不要忘记保存你的工作簿:)

你有没有尝试删除第一个n次:

  VBProject project = workbook.VBProject; int componentsCount = project.VBComponents.Count; for (int i = 1; i <= componentsCount; i++) { VBComponent component = project.VBComponents.Item(1); project.VBComponents.Remove(component); } 

你可能需要调整这一点,但我认为VBA集合是基于1(可能需要使project.VBComponents.Item(0)而不是

编辑:

我发现这篇文章解释了如何在VBA中做到这一点,但大概不难翻译…