如何: 为 Microsoft Office 中的应用程序调用从 Visual Basic 的一个 Visual Basic.net 类库

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 317535
本文已归档。它按“原样”提供,并且不再更新。
概要
使用本逐步式指南来从 Visual Basic 中调用.net 类库,为应用程序。此示例演示一个 vba 的应用程序程序如何使用 Visual Basic.net 类库来加密和解密字符串。您可以使用该在.net 中包括的加密技术命名空间用于加密/解密这样的框架。

back to the top

创建 Visual Basic.net 类库

  1. 启动 Microsoft Visual Studio.net。在 文件 菜单上指向 新建,然后单击 项目。在 Visual Basic 项目,下选择 类库。命名类 CryptoClass,然后单击 确定。默认情况下创建 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,单击在 工具 菜单上的 创建 GUID
  3. 项目属性 中,选择 配置属性。单击 生成器,然后选择 为 COM 互操作注册 该复选框。单击 确定
  4. 生成 菜单上单击创建 DLL 的 生成解决方案
back to the top

创建一个 vba 的应用程序的.net 类库使用调用的宏

  1. 启动 Microsoft Excel。按 ALT + F11 可启动 Visual Basic 编辑器。
  2. 插入 菜单上单击 模块,插入一个空白的模块。
  3. 工具 菜单上单击 引用。添加对 CryptoClass 库的引用,然后单击 确定
  4. 键入或粘贴以下代码在模块 1 的代码窗口中:
    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					
back to the top

测试代码

  1. 工具 菜单上单击 。在宏列表中,单击 TestCrypto,然后单击 运行
  2. 如果出现一个消息框,并显示加密的字符串,单击 确定。第二个消息框显示已解密的字符串。
  3. 如果类库要在运行.net 框架的另一台计算机上注册将 DLL 复制到系统并运行以下命令:
    regasm CryptoClass.dll /tlb:CryptoClass.tlb
back to the top
参考
有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
301070如何: 加密和解密使用 Visual Basic.net 的文件
有关详细的信息,请参阅下面的 Microsoft 开发人员网络 (MSDN) 的网站:back to the top
加密 vba

警告:本文已自动翻译

属性

文章 ID:317535 - 上次审阅时间:12/07/2015 08:53:53 - 修订版本: 8.5

Microsoft Office Access 2003, Microsoft Access 2002 标准版, Microsoft Office Excel 2003, Microsoft Excel 2002 标准版, Microsoft Office PowerPoint 2003, Microsoft PowerPoint 2002 标准版, Microsoft Office Word 2003, Microsoft Visual Studio .NET 2003 Professional Edition, Microsoft Word 2002 标准版, Microsoft Visual Studio .NET 2002 专业版

  • kbnosurvey kbarchive kbmt kbcrypt kbsecurity kbhowtomaster KB317535 KbMtzh
反馈