Word 文書内の 1 つの単語にパスワードを設定することはできますか?
私が望むのは、IT 構造からシステム ドキュメントを作成することです。ドキュメントにもパスワードを入れたいです。ドキュメント内のパスワードのロックを解除するには、「マスター」パスワードを入力する必要があります。パスワードを入力しない場合、ドキュメント内のパスワードは非表示にするか、そのようなものにする必要があります。
それは可能ですか?
はい、可能です。これを機能させるには、Word 固有のドキュメント保護機能、隠しテキスト属性、およびいくつかの VBA トリックを組み合わせて使用する必要があります。
まず、ドキュメント内のすべてのパスワードを隠しテキストとしてフォーマットします。(慣れていない方のために説明すると、非表示のテキストは、表示/非表示機能が true に設定されている場合にのみ表示されます。)
次に、コードを追加して、非表示のテキストが表示されないようにし、ドキュメントが開かれるたびにドキュメントが編集されないように保護します。
Private Sub Document_Open()
AddProtection
End Sub
Sub AddProtection()
With ActiveDocument
.ActiveWindow.View.ShowAll = False
.ActiveWindow.View.ShowHiddenText = False
.Application.Options.PrintHiddenText = False
.Protect Type:=wdAllowOnlyReading, NoReset:=True, Password:="DesiredPassword"
End With
End Sub
通常、Word ユーザーはいつでも非表示のテキストを表示できるため、この機能も制御する必要があります。ほとんどのメニューおよびリボン コマンドは、傍受されたコマンドの名前が付けられたサブルーチンを含むモジュールを作成することによって傍受できます。Sub に名前を付けるShowAll
ことで、この機能を制御し、パスワードが入力されたときに非表示のテキストのみを表示できるようになります。
Sub ShowAll()
If ActiveDocument.ProtectionType = wdAllowOnlyReading Then
'Do nothing
Else 'restore the Ribbon's toggle function
If ActiveDocument.ActiveWindow.View.ShowAll = True Then
ActiveDocument.ActiveWindow.View.ShowAll = False
Else
ActiveDocument.ActiveWindow.View.ShowAll = True
End If
End If
End Sub
最後に、ユーザーにパスワードの入力を求めるコードを追加し、正しく入力された場合は、以前は非表示だったテキストを表示します。
Sub RemoveProtection()
Dim strPassword As String
strPassword = InputBox("Enter document password.")
ActiveDocument.Unprotect Password:=strPassword
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.ActiveWindow.View.ShowHiddenText = True
End If
End Sub
すべての VBA コードを入力したら、IDE でモジュールを右クリックし、[プロジェクトのプロパティ] を選択して、[保護] タブで別のパスワードを割り当てます。これにより、パワー ユーザーが埋め込まれたパスワードにアクセスしたり、コードを変更したりすることができなくなります。
あとは、Word で QAT ボタンを作成し (このドキュメントでのみ表示されます)、RemoveProtection
サブボタンをそれに割り当てます。ドキュメントを開くと、パスワードは非表示になり、編集できなくなりますが、QAT ボタンをクリックして正しいパスワードを入力することで表示できます。
編集
この質問に最初に答えたとき、Word には [すべて表示] オプションとは別にオンにできる非表示のテキスト オプションがあるとは考えていませんでした。さらに、印刷オプションを使用して非表示のテキストを印刷できます。上記のコードを追加AddProtection
して、これらの設定をオフにしました。
さらにテストを行った結果、Word 2007 のユーザーは手動でOffice Orb|オプション|表示に移動し、[すべての書式マークを表示]または[非表示のテキスト] オプションを手動で変更して、非表示のテキストを表示できることも明らかになりました。これを回避するには、リボンのカスタマイズを作成し、ドキュメントと共に読み込む必要があります。
最後に、このようなタスクを達成するために Word を自分の意志に曲げるのは非常に楽しいことですが、パスワードを個別に暗号化し、内容を明らかにする前に暗号化を解除するほど保護のレベルは高くありません。 Word のドキュメント パスワード機能を使用して、ドキュメントの内容全体を暗号化します。