Ich habe meine eigene .Net Code auszuführen erfolgreich in der Lage gewesen, indem Sie die SchritteVerwendung von Standard-.NET-Bibliotheken mit VBA
Gibt es eine Möglichkeit, die Standard-.NET-Bibliotheken zu verwenden, ohne einen Wrapper hier Execute .NET 3.0 code from Office 2003 geschrieben schreiben ? Auf diese Weise können Sie die Registrierung und Installation einer benutzerdefinierten DLL in der GAC auf dem Clientcomputer vermeiden.
Ich habe Tlb-Dateien bereits in den Ordnern C: \ Windows \ Microsof.NET \ Framework gefunden und konnte einen Verweis auf mscorlib.dll hinzufügen. Betrachtet man die Dokumentation für RijndaelManaged, scheint diese Klasse COM sichtbar zu sein.
Ich bin in der Lage, eine Instanz zu erstellen, aber sobald ich versuche und damit arbeite, erhalte ich Fehler (z. B. "Typ nicht übereinstimmen").
Sub Macro1()
Dim aesImplementation As New RijndaelManaged
Set key = aesImplementation.GenerateKey()
Set iv = aesImplementation.GenerateIV()
End Sub
Ich bin bereit, alle Hacks zu akzeptieren, die Sie anbieten müssen!
ich keine Antwort re haben: verwenden. NET ohne einen Wrapper, aber wenn Sie neu in VBA sind, müssen Sie wissen, dass das Deklarieren von etwas wie "As New" zu diesem Zeitpunkt tatsächlich nichts instanziiert, wie in .NET. Es ist mir nicht klar, ob Ihr Fehler bei der Instanziierung oder beim 'Set' auftritt. (Ich gehe davon aus, dass Sie Ihre Schlüsselvariable als korrekten Typ deklariert haben, usw.). Siehe http://stackoverflow.com/questions/2478097/vba-difference-in-two-ways-of-declaring-a -new-object-trying-to-verstehen-why/2480559 # 2480559 – jtolle
Das ist verrückt Warum haben Sie eine gültige Syntax, wenn sie kein neues Objekt instanziiert ?! Es scheint jedoch in diesem Fall eine Instanz zu schaffen, ich werde mich zumindest daran erinnern, dass "als neu" nicht die beste Vorgehensweise ist. Der Grund, warum ich das Schlüsselobjekt nicht explizit deklariert habe, ist, weil ich bekomme "Kann nicht zum Array zuweisen" -Fehler, wenn ich das tue. Anscheinend tritt dieser Fehler auf, wenn Sie versuchen, einem Array eines anderen Typs zuzuweisen. –
Ist das nicht viel Arbeit, um nur etwas Arbeit zu sparen? Ich meine, wenn Ihr Benutzer Ihnen erlaubt, ein Makro auszuführen, warum nicht eine tatsächliche .NET-Anwendung ausführen? Das Office-Interop in .NET scheint ziemlich gut zu sein, also könnten Sie Dokumente gleich oder besser manipulieren! –