Ich finde seltsames Verhalten beim Versuch, eine Excel-Arbeitsmappe zu laden.
Ich habe ein Excel-AddIn, geschrieben in .NET mit COM Interop. Es wird hauptsächlich verwendet, um ein eigenes Ribbon-Tab zu erstellen, Arbeitsmappen aus einem Menü zu laden und eine Projektverwaltung durchzuführen.
Wenn ich versuche, eine Arbeitsmappe auf zwei Arten zu öffnen, erhalte ich unterschiedliche Ergebnisse:
Erstens, wenn ich die Arbeitsmappe (Excel 2003-Version) von innerhalb des Addins lade, funktioniert alles gut. Aus dem Button-Event des Menübands wird eine öffentliche Funktion openWorkbook
des Add-Ins aufgerufen, die application.workbooks.open(...)
verwendet, um die Excel-Arbeitsmappe zu laden.
Auf diese Weise wird die Arbeitsmappe ohne einen Fehler geöffnet.
Zweitens, wenn ich versuche, die Addin-Funktion innerhalb von VBA mit Code wie folgt aufzurufen:
%Vor%Ich bekomme eine Fehlermeldung:
Kompilierfehler
Automatisierungsfehler
und die IDE stoppt beim ersten Auftreten einer bedingten Kompilierung in einem der Arbeitsmappen-Module und sieht folgendermaßen aus:
%Vor%Ich habe versucht, einen booleschen Datentyp anstelle von Zahlen mit demselben Effekt zu verwenden.
Ich bin am Ende meiner Weisheit.
Im Automatisierungsmodus Excel lädt standardmäßig keine Add-Ins . Excel lädt Add-Ins mithilfe der Bedingungen, mit denen Add-Ins kompiliert wurden. Damit das Add-In im Automatisierungsmodus funktioniert, sollte man Excel zwingen, es zu laden, bevor Arbeitsmappen in Abhängigkeit von diesem Add-In geladen werden. Im Folgenden stelle ich das Codebeispiel aus meinem realen Projekt (mit einigen Editionen) vor, das diese Ladesequenz in JScript implementiert. Kommentare erklären Schritte.
%Vor%Tags und Links vba excel excel-vba conditional-compilation