[英]How to delete VB code from an Excel sheet using C#?
有誰知道如何使用 C# 從 Excel 工作簿中刪除所有VB 代碼? 此代碼不起作用。 它刪除了第一個(最后一個)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);
}
有什么建議?
我在山姆的幫助下解決了它。 我懷疑每個 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 中做到這一點,但大概它不太難翻譯......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.