В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

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

Поддержка Office 2003 завершена

8 апреля 2014 г. корпорация Майкрософт прекратила поддержку Office 2003. Это повлияло на обновления программного обеспечения и параметры безопасности. Узнайте, что это значит для вас и какие меры по безопасности можно предпринять.

Аннотация
В этой статье описан процесс вызова библиотеки классов .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 FunctionEnd 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) по адресу: К началу статьи
crypto vba
Свойства

Номер статьи: 317535 — последний просмотр: 05/05/2006 07:03:44 — редакция: 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
Отзывы и предложения