次の方法で共有

VBAで「編集の制限」を制御する方法を教えてください

Anonymous
2013-10-21T12:21:10+00:00

現在Wordで定型文書を作成中です。

そこで、2つ質問があります。

1.VBAによってWordの「編集の制限」機能を制御する事はできますか?

2.上記要望は、「編集の制限」中に「置換」が出来ないことに由来します。

現在の構想では、Excelのように一時的にプロテクトを解除して、処理が終わったら再プロテクトする、

という発想でマクロを組もうと考えています。

これ以外に「編集の制限中でもテキストを変更できる方法」や

「編集の制限を使用せずにユーザの編集操作を回避する方法」

(完全なプロテクトでなくとも編集のハードルを上げる方法)

がありましたら御教示願います。

(起動時にフォームフィールドへフォーカスし、以後フォーカスを移していく様な仕様にするしかないのかな...)

現在の仕様は以下の通りです。

・本文(定型文)

・テキスト入力用のフォームフィールドが4つ

・PDF作成ボタン(これは動作します)

・置換ボタンA(マクロのみによる既定の置換)

・置換ボタンB(ダイアログを表示させてユーザに置換対象を指定させる)

(ダイアログで置換できたら編集の制限をする意味が無いというのは分かっています。)

◯ファイル設定:

・許可する編集の種類:フォームへの入力

・パスワード:必要なし(厳密な保護は要求されない、編集のハードルを上げられれば良い。)

・ファイル自体を「読み取り専用」に。

◯問題のあるコード:

Private Sub 置換A_Click()

With Selection.Find

.Text = "てきすと"

.Replacement.Text = "テキスト"

End With

Selection.Find.Execute Replace:=wdReplaceAll

End Sub

Private Sub 置換B_Click()

With Dialogs(wdDialogEditReplace)

.Find = "てきすと"

.Show

End With

End Sub

◯コードのエラー:

実行時エラー4605

オブジェクトにより文書の保護されている箇所が参照されているためメソッドまたはプロパティが使用できません

以上になります。宜しくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2013-10-24T02:27:41+00:00

こんにちは。

> 現在の構想では、Excelのように一時的にプロテクトを解除して、処理が終わったら再プロテクトする、という発想でマクロを組もうと考えています。

文書を保護しておいて、DocumentオブジェクトのUnprotectメソッドで一時的に保護を解除、マクロで処理を行った後に再びDocumentオブジェクトのProtectメソッドで文書を保護すれば良いかと思います。

Option Explicit

Public Sub Sample()

  Const PW As String = "pass" '文書保護のパスワード

  With ActiveDocument

    .Unprotect Password:=PW '保護を一時的に解除

    '------------------------------------------

    '行いたい処理をここに記述

    '------------------------------------------

    On Error Resume Next

    With Application.Dialogs(wdDialogEditReplace)

      .Find = "てきすと"

      .Show

    End With

    On Error GoTo 0

    '------------------------------------------

    .Protect Type:=wdAllowOnlyFormFields, Password:=PW '再度保護

  End With

End Sub

この回答は役に立ちましたか?

2 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-10-24T09:31:00+00:00

    ありがとうございます!

    正にこれです。

    Word VBAは手を付け始めたばかりで、しかも情報量が少ないので

    Excelだとすぐ出来ることも出来ずにいました。やはり制御できたんですね。

    本当に助かりました。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2013-10-22T09:24:16+00:00

    返信ありがとうございます。

    >当フォーラムにはVBA のカテゴリーがない

    そうだったんですか!すみません気付きませんでした。

    MSDNは心理的な敷居が高いですが、聞くしか無さそうですね。

    フォーラムへのリンクも付けていただき、ありがとうございます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2013-10-22T08:11:30+00:00

    junnny さん、こんにちは。

    マイクロソフト コミュニティ への投稿ありがとうございます。

    当フォーラムには VBA のカテゴリーがないため、情報が集まりにくい場合もあるようです。

    そのような場合には、VBA について情報交換を行っている MSDN のフォーラムを利用するのがよいのかな、と思います。

    MSDN の VBA フォーラム

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません