SO WIRD'S GEMACHT: Aufrufen einer Visual Basic .NET-Klassenbibliothek aus Visual Basic für Applikationen in Microsoft Office

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
317535 HOW TO: Call a Visual Basic .NET Class Library from Visual Basic for Applications in Microsoft Office

Zusammenfassung

Dieser Artikel beschreibt Schritt für Schritt, wie eine .NET-Klassenbibliothek von Visual Basic für Applikationen aus aufgerufen werden kann. Das folgende Beispiel zeigt, wie ein Visual Basic für Applikationen-Programm eine Visual Basic .NET-Klassenbibliothek verwenden kann, um eine Zeichenfolge zu verschlüsseln und zu entschlüsseln. Für die Verschlüsselung/Entschlüsselung können Sie den Kryptografie-Namespace verwenden, der im .NET Framework enthalten ist.

Visual Basic .NET-Klassenbibliothek erstellen

  1. Starten Sie Microsoft Visual Studio .NET. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt. Unter Visual Basic-Projekte wählen Sie die Option Klassenbibliothek. Geben Sie der Klasse den Namen CryptoClass, und klicken Sie dann auf OK. Jetzt wird standardmäßig "Class1" erstellt.
  2. Ersetzen Sie den Inhalt von Class1 durch den folgenden Code:

    Imports System.Security.Cryptography

    <ComClass(Class1.ClassId, Class1.InterfaceId, Class1.EventsId)> Public Class Class1
    Public Const ClassId As String = "98349785-8BE2-4604-848D-F5B103D61715"
    Public Const InterfaceId As String = "36613EE9-125F-493d-9968-771E18C2226A"
    Public Const EventsId As String = "A036F02F-F87E-4548-A536-7DD7EA8E62B5"

    Const sKey As String = "MyKey"

    Public Function EncryptTripleDES(ByVal sIn As String) As String
    Dim DES As New TripleDESCryptoServiceProvider()
    Dim hashMD5 As New MD5CryptoServiceProvider()

    ' Compute the MD5 hash.
    DES.Key = hashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey))
    ' Set the cipher mode.
    DES.Mode = CipherMode.ECB
    ' Create the encryptor.
    Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor()
    ' Get a byte array of the string.
    Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(sIn)
    ' Transform and return the string.
    Return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))
    End Function

    Public Function DecryptTripleDES(ByVal sOut As String) As String
    Dim DES As New TripleDESCryptoServiceProvider()
    Dim hashMD5 As New MD5CryptoServiceProvider()

    ' Compute the MD5 hash.
    DES.Key = hashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey))
    ' Set the cipher mode.
    DES.Mode = CipherMode.ECB
    ' Create the decryptor.
    Dim DESDecrypt As ICryptoTransform = DES.CreateDecryptor()
    Dim Buffer As Byte() = Convert.FromBase64String(sOut)
    ' Transform and return the string.
    Return System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))
    End Function
    End Class

    Hinweis: Mit dem GUID-Generator können Sie neue GUIDs für "ClassId", "InterfaceId" und "EventsId" erzeugen. Klicken Sie im Menü Extras auf GUID erstellen, um neue GUIDs erstellen zu lassen.
  3. Wählen Sie unter Projekteigenschaften die Option Konfigurationseigenschaften. Klicken Sie auf Erstellen, und aktivieren Sie dann das Kontrollkästchen Für COM-Interop registrieren. Klicken Sie auf OK.
  4. Klicken Sie im Menü Erstellen auf Projektmappe erstellen, um die DLL zu generieren.

Erstellen eines Visual Basic für Applikationen-Makros zum Aufrufen der .NET-Klassenbibliothek

  1. Starten Sie Microsoft Excel. Drücken Sie [ALT]+[F11], um den Visual Basic-Editor zu starten.
  2. Klicken Sie im Menü Einfügen auf Modul, um ein leeres Modul einzufügen.
  3. Klicken Sie im Menü Extras auf Verweise. Fügen Sie einen Verweis auf die CryptoClass-Bibliothek hinzu, und klicken Sie anschließend auf OK.
  4. Geben oder fügen Sie den folgenden Code in das Codefenster von "Module1" ein:
    Sub TestCrypto()
    Dim oCrypto As New CryptoClass.Class1
    Dim sCrypt As String

    sCrypt = oCrypto.EncryptTripleDES("This is a test")
    MsgBox "Encrypted text = " & sCrypt
    MsgBox "Decrypted text = " & oCrypto.DecryptTripleDES(sCrypt)
    End Sub

Den Code testen

  1. Klicken Sie im Menü Extras auf Makros. Klicken Sie in der Liste der Makros auf TestCrypto, und klicken Sie anschließend auf Ausführen.
  2. Falls ein Meldungsfeld mit der verschlüsselten Zeichenfolge angezeigt wird, klicken Sie auf OK. Jetzt wird ein Meldungsfeld mit der entschlüsselten Zeichenfolge angezeigt.
  3. Falls die Klassenbibliothek auf einem anderen Computer registriert werden muss, auf dem .NET Framework ausgeführt wird, kopieren Sie die DLL auf diesen Computer, und führen Sie dann den folgenden Befehl aus:
    regasm CryptoClass.dll /tlb:CryptoClass.tlb

Informationsquellen

Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

301070 Wie Verschlüsseln und Entschlüsseln einer Datei, indem Visual Basic .NET oder Visual Basic 2005 verwendet
Weitere Informationen finden Sie auf folgender MSDN-Website:
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 317535 – Letzte Überarbeitung: 30.10.2008 – Revision: 1

Feedback