Automatisierungsfehler bei der bedingten Kompilierung

9

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.

    
DrMarbuse 07.10.2014, 08:31
quelle

1 Antwort

1

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%     
Aleksey F. 17.07.2015, 16:10
quelle