[HOWTO] Microsoft Office で Visual Basic for Applications から Visual Basic .NET クラス ライブラリを呼び出す方法

文書翻訳 文書翻訳
文書番号: 317535 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Visual Basic for Applications から .NET クラス ライブラリを呼び出す方法について手順を追って説明します。この資料のサンプルでは、Visual Basic for Applications プログラムから Visual Basic .NET クラス ライブラリを使用して、文字列の暗号化と復号化を行う方法を示します。.NET Framework に含まれている cryptography 名前空間を使用して、暗号化と復号化を行うことができます。

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 を作成するには、[ツール] メニューの [GUID の作成] をクリックします。
  3. プロジェクトのプロパティで [構成プロパティ] をクリックします。[ビルド] をクリックし、[COM 相互運用機能に登録] チェック ボックスをオンにします。[OK] をクリックします。
  4. [ビルド] メニューの [ソリューションのビルド] をクリックして DLL を作成します。

.NET クラス ライブラリを呼び出す Visual Basic for Applications マクロを作成する

  1. Microsoft Excel を起動します。Alt キーを押しながら F11 キーを押して Visual Basic Editor を起動します。
  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] をクリックします。2 番目のメッセージ ボックスに復号化された文字列が表示されます。
  3. .NET Framework を実行している別のコンピュータでクラス ライブラリを登録する必要がある場合は、DLL をそのシステムにコピーし、次のコマンドを実行します。
    regasm CryptoClass.dll /tlb:CryptoClass.tlb

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
301070 [HOW TO] Visual Basic .NET を使用してファイルの暗号化および復号化を行う方法
詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

プロパティ

文書番号: 317535 - 最終更新日: 2007年6月29日 - リビジョン: 8.3
この資料は以下の製品について記述したものです。
  • 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
  • Microsoft Visual Studio .NET 2002 Professional Edition
キーワード:?
kbcrypt kbsecurity kbhowtomaster KB317535
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

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