簡體   English   中英

如何使用 C# 從 Excel 工作表中刪除 VB 代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM