Excelで暗号化関数を作る方法|VBAを使ったステップバイステップ完全ガイド
Excelで作業をしていると、機密情報を守るためにデータを暗号化したい場面があるかもしれません。実は、簡単なVBAコードを使えば、Excel上でデータを暗号化・復号できる関数を自作できます。この記事では、Excelで暗号化関数を作成する手順を、初心者の方でもわかるようにステップごとに丁寧に解説します。
Excelで暗号化関数を作成する手順
ここでは、Excelで暗号化関数を作成する具体的な手順を順番に見ていきましょう。必要なのは短いVBAコードだけです。以下の手順に従って進めてください。
ステップ1:暗号化用のデータセットを準備する
- まず、ワークシートにデータセットを作成します。今回は例として、ある会社の営業担当者(Salesman)・給与(Salary)・勤務地(State)を含むデータセットを用意しました。このうち「給与」列のデータを暗号化していきます。

ステップ2:VBAウィンドウを開く
- 次に、リボンの「開発」タブに移動し、「Visual Basic」をクリックしてVBAエディターを開きます。
- ショートカットキーの「Alt」+「F11」を押しても、同じウィンドウを開くことができます。

ステップ3:VBAモジュールに暗号化用のコードを入力する
- VBAウィンドウのメニューから「挿入」>「標準モジュール」を選択します。

- するとモジュールウィンドウが表示されます。
- そのウィンドウに、以下のコードをそのまま貼り付けてください。
Private Function iStrTPsd(ByVal Txt As String) As Long
Dim xVl As Long
Dim xCha As Long
Dim xSf1 As Long
Dim xSf2 As Long
Dim J As Integer
Dim xLn As Integer
xLn = Len(Txt)
For J = 1 To xLn
xCha = Asc(Mid$(Txt, J, 1))
xVl = xVl Xor (xCha * 2 ^ xSf1)
xVl = xVl Xor (xCha * 2 ^ xSf2)
xSf1 = (xSf1 + 7) Mod 19
xSf2 = (xSf2 + 13) Mod 23
Next J
iStrTPsd = xVl
End Function
Private Function iEncryption(ByVal Pd As String, ByVal InTx As String, Optional ByVal Encc As Boolean = True) As String
Dim xOfset As Long
Dim xLn As Integer
Dim J As Integer
Dim xCha As Integer
Dim xOutTx As String
xOfset = iStrTPsd(Pd)
Rnd -1
Randomize xOffset
xLn = Len(InTx)
For J = 1 To xLn
xCha = Asc(Mid$(InTx, J, 1))
If xCha >= 32 And xCha <= 126 Then
xCha = xCha - 32
xOfset = Int((96) * Rnd)
If Encc Then
xCha = ((xCha + xOfset) Mod 95)
Else
xCha = ((xCha - xOfset) Mod 95)
If xCha < 0 Then xCha = xCha + 95
End If
xCha = xCha + 32
xOutTx = xOutTx & Chr$(xCha)
End If
Next J
iEncryption = xOutTx
End Function
Sub xEncryption_Range()
Dim xxRg As Range
Dim xxPsd As String
Dim xxTxt As String
Dim xxEnc As Boolean
Dim xxRet As Variant
Dim xxCell As Range
On Error Resume Next
xxTxt = ActiveWindow.RangeSelection.Address
Set xxRg = Application.InputBox("You need to select range:", "Excel Encryption", xxTxt, , , , , 8)
Set xxRg = Application.Intersect(xxRg, xxRg.Worksheet.UsedRange)
If xxRg Is Nothing Then Exit Sub
xxPsd = InputBox("Type your password:", "Excel Encryption")
If xxPsd = "" Then
MsgBox "Your password can't be empty", , "Excel Encryption"
Exit Sub
End If
xxRet = Application.InputBox("Insert 1 to encrypt cells or Insert 2 to decrypt cells", "Excel Encryption", , , , , , 1)
If TypeName(xxRet) = "xBoolean" Then Exit Sub
If xxRet > 0 Then
xxEnc = (xxRet Mod 2 = 1)
For Each xxCell In xxRg
If xxCell.Value <> "" Then
xxCell.Value = iEncryption(xxPsd, xxCell.Value, xxEnc)
End If
Next
End If
End Sub

ステップ4:コードを実行してデータを暗号化する
- 続いて、VBAウィンドウ上部の「実行」ボタンをクリックします。

- すぐに「マクロ」ダイアログボックスが表示されるので、「実行」ボタンを押します。

- 次に「Excel Encryption」ダイアログボックスが表示されます。
- 暗号化したいセル範囲を選択し、「OK」をクリックしてください。

- 再びダイアログボックスが表示されます。
- 任意のパスワードを入力して「OK」を押します。

- 続けて、もう一つダイアログボックスが現れます。
- データを暗号化する場合は「1」と入力して「OK」をクリックしましょう。

実行結果の確認
- 最後にワークシートへ戻ると、選択した範囲のデータが暗号化されていることを確認できます。

- データを元に戻す(復号する)には、同じコードを再度実行し、先ほどの手順を繰り返します。
- ポイントは、最後のダイアログボックスで「1」ではなく「2」を入力することです。
- また、復号の際は暗号化時に設定したものと同じパスワードを入力するのを忘れないでください。

- これで、暗号化されていたデータが元の状態に復号されます。

あわせて読みたい:Excelでセルの内容を暗号化する方法
パスワードでExcelファイル自体を暗号化する方法
ここからは、ファイルを開く際にパスワードを要求するよう、Excelブック全体を保護する手順を紹介します。セル単位の暗号化とは異なり、ファイルそのものにロックをかけられる便利な機能です。
- まず、Excelリボンの「ファイル」タブをクリックします。

- 次に、画面左のペインから「名前を付けて保存」(コピーの保存)を選択します。

- 表示されたウィンドウで「その他のオプション」をクリックします。

- 続いて、保存ウィンドウ内の「ツール」>「全般オプション」の順に選択します。

- 「全般オプション」ダイアログボックスの「読み取りパスワード」欄に任意のパスワードを入力し、「OK」を押します。

- 確認のため「パスワードの確認」ダイアログボックスが表示されるので、先ほどと同じパスワードを再入力して「OK」をクリックします。

- 最後にファイルを保存して完了です。
- 以降、このExcelファイルを開くたびにパスワードの入力が求められるようになります。

あわせて読みたい:パスワードなしで暗号化されたExcelファイルを復号する方法
練習用ワークブックのダウンロード
この記事で使用した練習用ワークブックは、こちらからダウンロードできます。
まとめ
この記事では、VBAを使ってExcelのデータを暗号化する手順と、パスワードでファイル全体を保護する方法を段階的に解説しました。ちょっとしたコードを追加するだけで、機密性の高いデータをしっかり守れるようになります。ご質問やご意見・ご提案がありましたら、ぜひコメント欄でお知らせください。
関連記事
- Excelの暗号化を解除する方法
- 【解決済み】暗号化されたExcelファイルが開けないときの対処法
<< Excelでの暗号化ガイド|Excelの保護|Excelの学習に戻る
無料の高度なExcel演習問題と解答セットを受け取ろう!
-
Officeアプリで自動保存(AutoRecover)の間隔を変更する方法【Word・Excel・PowerPoint対応】
Microsoft Officeアプリには、作業中の内容を一定間隔で自動的に保存してくれる機能が搭載されています。これが「AutoSave(自動保存)」あるいは「AutoRecover(自動回復)」と呼ばれる機能です。この機能のおかげで、パソコンやOfficeアプリが突然クラッシュしても、作業内容を大きく失う心配がありません。 しかし、多くのユーザーはドキュメントの作成や編集が非常に速く、Officeアプリがバックグラウンドで自動保存を実行する前に、大量の編集を加えてしまうことがあります。その場合、自動保存が行われる前にシステムがクラッシュすると、それらの変更内容は失われ、復元できなくなってし
-
Microsoft Wordで段落の両端揃え(Justify)ができないときの直し方
Microsoft Wordでのテキスト配置は、この人気アプリの中核的な機能の一つです。多くのユーザーは「両端揃え(Justify)」オプションを使って文書を整えていますが、ある日突然、この機能が正常に動作しなくなることがあります。では、この問題をどう解決すればよいのでしょうか?幸い、いくつかの有効な対策があります。本記事では最新バージョンのWordを前提に解説しますが、上級者の方であれば旧バージョンでも同様の手順で対応できるでしょう。 Wordで段落が両端揃えされない場合の修正手順 Wordでテキストや段落の両端揃えが機能しない場合は、以下の手順を試してみてください。 対象のWord文書を