Excelを利用して、Database接続した状態からID,Passwordをやり取りするようなことを考えている方も多いと思います。

本来であればセキュリティが弱いExcelを使わずにVisual Studioで作り上げたほうがDatabaseとのやり取りや、ソースなどが見られることもないので安全だと思いますが・・。

今回、少々訳があってDatabaseのユーザー情報を持ったテーブルからADO接続しフォームからログイン認証を行うものを作る必要がありました。

その上で、Databaseにパスワードを登録する際に生のPasswardをUpdateするわけには行かないので、今回はとりあえず簡単な暗号・復号化のソースを書きました。

password_fukugou

Private Sub CommandButton1_Click()
Dim filepath As String
Dim fNumber As Integer
Dim fString As String
Dim L As Long
Dim LL As Long
Dim B() As Byte

fNumber = FreeFile
filepath = ThisWorkbook.Path & "\ing_output.tmp"

'古い「fName」パスの暗号ファイルを削除する。
Open filepath For Output As #fNumber
Close #fNumber

'暗号化したい文字列を取得
fString = TextBox1.Value

'ファイル出力(バイナリモードでデータを1バイトずつ処理をする)
Open filepath For Binary As #fNumber

L = Len(fString)
ReDim B(L - 1)

For LL = 0 To L - 1
B(LL) = Asc(Mid(fString, LL + 1, 1))
B(LL) = Not B(LL)
Next

Put #fNumber, , B()
Close #fNumber
End Sub

Private Sub CommandButton2_Click()
Dim filepath As String
Dim fNumber As Integer
Dim fString As String
Dim L As Long
Dim LL As Long
Dim B() As Byte

fNumber = FreeFile
filepath = ThisWorkbook.Path & "\ing_output.tmp"

Open filepath For Binary As #fNumber

L = LOF(fNumber)
ReDim B(L - 1)

Get #fNumber, , B()

Close #fNumber

For LL = 0 To L - 1
B(LL) = Not B(LL)
fString = fString & Chr(B(LL))
Next

'複合した内容を表示する。
TextBox2.Value = fString

End Sub

入力された半角英数字をバイナリモード 2バイトに置き換える方法です。
復号化はバイナリモードから1バイトづつに展開するだけですので、見た目はよくわからない漢字のカタマリになりますが、簡単すぎるので見る人が見ればわかると思います。

そもそもExcel vbaではセキュリティが甘いので、コレ以上求めてもというのが正直なところ。
今回は、さらっと見てわからなければ良いぐらいのものなので。

ソースと、実際のサンプルファイルをおいておきます。
#ログイン認証 (Access Databaseファイル)のフォームは別の機会に。

サンプルファイル ダウンロード Passward_Sample1.zip