Web、メール、印刷ドキュメントを作成するための Microsoft ワード プロセッシング ソフトウェア製品のファミリ。
こんにちは。
本件に関して、すでに解決済みですのでまったくの蛇足になるのですが、「文書を比較した状態でDOSからWORDを起動する方法」で生田さんからコメントがありましたので、VBAを使ったほんの一例を紹介させていただければと思います。
(※ 文書内にVBAマクロを埋め込むことになりますので、あくまでも参考程度の情報です。)
編集の制限を掛けた文書に対して先方で"ブックマークの挿入だけ"行いたい、というのが目的だと思いますが、マクロを使うと
- 一時的に編集の制限を解除
- ブックマークを挿入
- 再度編集の制限実施
といったことが可能になります。
具体的な手順としては下記の通りです。
- 対象となるWord文書の編集の制限を解除しておきます。
- 下記コードをWord文書の「標準モジュール」に貼り付けます。
※ 貼り付け方は下記Webページが参考になります(Excelですが大体の手順は同じです)。
・Excel(エクセル) VBA入門:VBAコード(プログラム)の記述と実行の手順
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_tejyun.html
Option Explicit
Private Const PW As String = "password" '編集の制限パスワード
Private Sub AddBookmark()
'ブックマークの挿入
Dim s As String
s = InputBox("選択箇所にブックマークを挿入します。" & vbCrLf & "ブックマーク名を入力してください。")
If Len(s) < 1 Then
MsgBox "キャンセルします。", vbExclamation + vbSystemModal
Exit Sub
End If
ActiveDocument.Unprotect PW '編集の制限解除
ActiveDocument.Bookmarks.Add Name:=s, Range:=Selection.Range 'ブックマーク挿入
ActiveDocument.Protect Type:=wdAllowOnlyReading, Password:=PW, UseIRM:=False, EnforceStyleLock:=False '編集の制限
End Sub
Private Sub AddMacroButton()
'「アドイン」タブにマクロ実行用ボタンを追加するマクロ
'※ 一度だけ実施
'※ 実行後文書保存
Const CommandBarName As String = "MyTool" 'コマンドバー名
Application.CustomizationContext = ThisDocument '保存先をThisDocumentに指定
On Error Resume Next
Application.CommandBars(CommandBarName).Delete
On Error GoTo 0
With Application.CommandBars.Add(Name:=CommandBarName)
.Visible = True
With .Controls.Add(Type:=msoControlButton)
.Caption = "ブックマークの挿入"
.OnAction = "AddBookmark" 'マクロ割り当て
.FaceId = 758
End With
End With
End Sub
- 貼り付けたコード内にある「Private Const PW As String = "password"」の「password」の部分を編集の制限で使用するパスワードに変更します。
- VBEから「AddMacroButton」を実行し、"ブックマークを挿入するためのマクロ(AddBookmark)"を実行するためのボタンを「アドイン」タブに追加します。
- ボタンが無事に追加されたら、下記Webページを参考にVBAプロジェクトを保護します。
・作成したものの保護
http://www.asahi-net.or.jp/~ef2o-inue/secur/sub07_03.html
- 手順1.で解除していた編集の制限を再度実施します。
- Word文書を保存します。
以上の手順で、編集の制限が掛かった文書でも、アドインタブに追加されたボタンからマクロ(AddBookmark)を実行することで、ブックマークの追加が行えます。
ただ、先述の通り文書にマクロを埋め込むことになりますので、ある程度のWordマクロ(VBA)に関する知識が必要になりますので、楠部さんの回答にある"コメント"で対応できるのであれば、そちらの方が良いだろうと思います。