2 Stimmen

Wie lösche ich VB-Code aus einem Excel-Blatt mit C#?

Weiß jemand, wie man die alle VB-Code aus einer Excel-Arbeitsmappe mit C#? Dieser Code funktioniert nicht. Er entfernt die erste (letzte) VBComponent, aber löst eine ArgumentException bei der zweiten aus.

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);
} 

Irgendwelche Vorschläge?

5voto

Bashir Magomedov Punkte 2811

Ich habe es mit Sams Hilfe gelöst. Ich vermute, dass jede Excel-Arbeitsmappe einige nicht löschbare VBComponents enthält, so dass wir, anstatt sie zu löschen, ihren Inhalt löschen können. Jetzt funktioniert es. Vielen Dank, Sam.

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);
}

Vergessen Sie nicht, Ihre Arbeitsmappe anschließend zu speichern

2voto

Sam Holder Punkte 31723

Haben Sie versucht, den ersten Eintrag n-mal zu löschen:

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);
}

Möglicherweise müssen Sie dies optimieren, aber ich denke, die VBA-Sammlungen sind 1-basiert (möglicherweise müssen Sie die project.VBComponents.Item(0) stattdessen.

EDITAR:

Ich fand ce poste die erklärt, wie man es in VBA zu tun, aber vermutlich ist es nicht allzu schwierig zu übersetzen ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X