Вызов в Microsoft Office библиотеки классов Visual Basic .NET с помощью Visual Basic for Applications

Переводы статьи Переводы статьи
Код статьи: 317535 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье описан процесс вызова библиотеки классов .NET с помощью макроса на языке Visual Basic for Applications. В представленном примере программы на языке Visual Basic for Applications библиотека классов Visual Basic .NET используется для шифрования и расшифровки строки. Существует возможность применения пространства имен шифрования из состава .NET Framework.

Создание библиотеки классов Visual Basic .NET

  1. Запустите Microsoft Visual Studio .NET. В меню Файл последовательно выберите команды Создать и Проект. В разделе Проекты Visual Basic выберите элемент Биьлиотека классов. Присвойте классу имя CryptoClass и нажмите кнопку OK. По умолчанию будет создан класс Class1.
  2. Замените содержимое класса Class1 приведенным ниже программным кодом.

    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
    						

    Примечание. Чтобы создать новые идентификаторы GUID для ClassId, InterfaceId и EventsId, воспользуйтесь генератором GUID. Для этого выберите в меню Сервис команду Создать GUID.
  3. В меню Свойства проекта выберите пункт Свойства конфигурации. Нажмите кнопку Построить и установите флажок Регистрация для COM-взаимодействия. Нажмите кнопку ОК.
  4. Для создания библиотеки DLL выберите в меню Построение команду Построить решение.

Создание макроса на языке Visual Basic for Applications для вызова библиотеки классов .NET

  1. Запустите Microsoft Excel. Чтобы запустить редактор Visual Basic, нажмите сочетание клавиш ALT+F11.
  2. Чтобы вставить новый модуль, выберите в меню Вставка пункт Модуль.
  3. Выберите в меню Сервис команду Ссылки. Добавьте ссылку на библиотеку CryptoClass и нажмите кнопку OK.
  4. Скопируйте следующие строки в окно программного кода модуля Module1.
    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
    					

Проверка образца программы

  1. В меню Сервис выберите команду Макрос. В списке макросов выделите TestCrypto и нажмите кнопку Выполнить.
  2. Когда появится окно, содержащее зашифрованную строку, нажмите кнопку OK. Строка будет отображена в незашифрованном виде.
  3. Чтобы зарегистрировать библиотеку классов на другом компьютере, где используется .NET Framework, скопируйте на него созданный файл с расширением DLL и выполните следующую команду:
    regasm CryptoClass.dll /tlb:CryptoClass.tlb

Ссылки

За дополнительной информацией обратитесь к следующей статье Microsoft Knowledge Base:
301070 HOW TO: Encrypt and Decrypt a File by Using Visual Basic .NET
За дополнительной информацией обратитесь на веб-узел Microsoft Developer Network (MSDN) по адресу:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/vsofficedev.asp

Свойства

Код статьи: 317535 - Последний отзыв: 5 мая 2006 г. - Revision: 6.2
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Visual Studio .NET 2002 Professional Edition
Ключевые слова: 
kbcrypt kbsecurity kbhowtomaster KB317535

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com