こんにちは。
おっしゃるとおりの内容になっているか分かりませんが、「文書の保護」自体をマクロで行うようにしてみました。
>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
お礼
御礼が遅くなり、申し訳ありません。 にしても、すばらしい!すでにアンケートは配布してしまったのですが、同様の機会があったとき、ぜひ試して見ます。 ありがとうございました。