- ベストアンサー
WORDでセキュリティの変更をユーザーに促す方法
- マクロ入りのワードファイルを配布する際、セキュリティ設定が異なるPC環境において、ユーザーにセキュリティを変更してもらう方法について考えています。
- セキュリティ「高」のユーザーには本文を非表示にしておき、セキュリティ設定を変更するための手続きの説明のみを表示します。
- セキュリティ「中」のユーザーの場合は、非表示部分(本文)を表示し、セキュリティ変更の説明に関する文章を削除します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 おっしゃるとおりの内容になっているか分かりませんが、「文書の保護」自体をマクロで行うようにしてみました。 >PC環境によって、編集記号がONだったり、OFFだったりするので、非表示の目的としては使えないことが分かりました。 良く調べていらっしゃるようですね。以下のものは、マクロを起動したまま、ファイルを閉じると、メッセージを入れて、全文のフォントの「隠し文字」と「白」に変更され、ファイルが閉じられます。なぜか、確実性がいまひとつなのは、理由が良く分かりません。もう少し、マクロの挙動自体を細かく精査する必要がありそうです。一応、こちらで調べた範囲では、問題は発生していなかったのですが、何があるのか、分かりません。ベータ版として、試してみてください。 後、文書の保護のパスワードなどは、付け加えてください。 なお、本来、Wordのマクロは、フィールド側が中心だと思いますので、おそらく、ご質問者さんの文書自体は、もう少し複雑な構造になっているので、Protect とUnProtect の行き来する部分では、違うかもしれません。その時は、付け加えてください。 '------------------------------------------------ 'ThisDocument モジュールに書いてください。 Private Sub Document_Open() '開始時 Dim sText As String Dim i As Integer 'Beep ''マクロ起動確認 On Error Resume Next ThisDocument.Unprotect On Error GoTo 0 Selection.HomeKey Unit:=wdStory Selection.EndKey Unit:=wdStory, Extend:=wdExtend With Selection.Font .Hidden = False .Color = wdColorAutomatic End With Selection.HomeKey Unit:=wdStory For i = 1 To 3 '二重に書き入れたときのため sText = ThisDocument.Paragraphs(i).Range.Text If InStr(1, sText, "このドキュメントは、セキュリティを", 1) > 0 Then ThisDocument.Paragraphs(i).Range.Delete End If Next i ThisDocument.Protect wdAllowOnlyReading End Sub Private Sub Document_Close() '終了時 Dim sText As String Dim nMSG As String nMSG = "このドキュメントは、セキュリティを「高」にしてあると読めません。" & Chr(11) & _ "ツール-マクロ-セキュリティを「中」にして「終了」してください。再び、Wordを起動して、このファイルを開けてください。" & vbCrLf On Error Resume Next ThisDocument.Unprotect On Error GoTo 0 Selection.HomeKey Unit:=wdStory sText = ThisDocument.Paragraphs(1).Range.Text If InStr(1, sText, "このドキュメントは、セキュリティを", 1) = 0 Then Selection.InsertBefore Text:=nMSG With Selection .Font.Hidden = False .Font.Color = wdColorAutomatic .ParagraphFormat.Alignment = wdAlignParagraphLeft End With End If Selection.Collapse wdCollapseEnd Selection.EndKey Unit:=wdStory, Extend:=wdExtend With Selection.Font .Hidden = True .Color = wdColorWhite End With ThisDocument.Protect wdAllowOnlyReading ThisDocument.Save End Sub
お礼
御礼が遅くなり、申し訳ありません。 にしても、すばらしい!すでにアンケートは配布してしまったのですが、同様の機会があったとき、ぜひ試して見ます。 ありがとうございました。