PythonによるWord文書の編集制限の設定と削除

Word文書の編集制限は、文書のセキュリティ機能であり、あなたが制限する文書を編集することができます。 編集制限を設定することで、文書へのアクセスを制御し、権限のある担当者だけが変更を加えられるようにしたり、権限のある担当者がどのセクションでどのような変更を加えられるかを制限したりすることができます。 この制御により、不必要な変更や悪用の可能性を防ぎ、文書の改ざんや破損のリスクを減らすことができるため、共同編集や情報収集などが容易になります。 この記事では、Pythonを使って**Word文書の編集制限を設定**したり、**編集制限を解除**したりする方法について説明します。

- **[パスワードによるWord文書全体の編集制限の設定](#パスワードによるword文書全体の編集制限の設定)**
- **[Word文書に編集制限を設定する際の制限解除領域の追加](#word文書に編集制限を設定する際の制限解除領域の追加)**
- **[Word文書の編集制限の解除](#word文書の編集制限の解除)**

Spire.Doc for Pythonライブラリは、[公式ウェブサイト](https://www.e-iceblue.com/Introduce/doc-for-python.html)からダウンロードするか、pip経由でインストールすることができます：
```PowerShell
pip install Spire.Doc
```

## パスワードによるWord文書全体の編集制限の設定
Spire.Doc for Pythonでは、**Document.Protect()** メソッドと **ProtectionType** 列挙型を使用して、Word文書に特定の種類の編集制限を設定することができます。その方法の詳細は以下の通りです。
- **Document** クラスのオブジェクトを作成します。
- **Document.LoadFromFile()** メソッドでWord文書を読み込む。
- **Document.Protect(type:ProtectionType, password:str)** メソッドを使用して、文書に指定された編集制限を設定します。
- **Document.SaveToFile()** メソッドを使用して文書を保存します。

**Python**
```python
from spire.doc import *
from spire.doc.common import *

# Documentクラスのオブジェクトを作成する
doc = Document()

# Word文書を読み込む
doc.LoadFromFile("Sample.docx")

# 編集制限タイプを読み取り専用（変更不可）に設定する
doc.Protect(ProtectionType.AllowOnlyReading, "password")

# 編集制限タイプを変更のみに設定する
# doc.Protect(ProtectionType.AllowOnlyRevisions, "password")

# 編集制限タイプをコメントのみに設定する
# doc.Protect(ProtectionType.AllowOnlyComments, "password")

# 編集制限タイプをフォームフィールドのみに設定する
# doc.Protect(ProtectionType.AllowOnlyFormFields, "password")

# 文書を保存する
doc.SaveToFile("output/編集の制限.docx")
doc.Close()
```

**結果文書**
![パスワードによるWord文書全体の編集制限の設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e7f9d4c6-e9ec-69a4-1556-8a6d8f2a72ef.png)

## Word文書に編集制限を設定する際の制限解除領域の追加
Word文書の編集制限を設定する際、許可領域の始点と終点にマークを挿入することで、制限のない領域を設定することができます。 詳しい手順は以下の通りです。
- **Document** クラスのオブジェクトを作成します。
- **Document.LoadFromFile()** メソッドでWord文書を読み込みます。
- **Document.Sections.get_Item()** メソッドで文書の最初のセクションを取得します。
- **PermissionStart** クラスオブジェクトと **PermissionEnd** クラスオブジェクトを作成します。
- **Paragraph.ChildObjects.Insert()** メソッドと **Paragraph.ChildObjects.Add()** メソッドを使って、-**PermissionStart** タグと **PermissionEnd** タグをドキュメントに挿入します。
- **Document.Protect()** メソッドで編集制限を設定します。
- **Document.SaveToFile()** メソッドを使用してドキュメントを保存します。

**Python**
```python
from spire.doc import *
from spire.doc.common import *

# Documentクラスのオブジェクトを作成する
doc = Document()

# Word文書を読み込む
doc.LoadFromFile("Sample.docx")

# 最初のセクションを取得する
section = doc.Sections.get_Item(0)

# 許可の開始タグと終了タグを作成する
start = PermissionStart(doc, "exception1")
end = PermissionEnd(doc, "exception1")

# 最初のセクションに許可の開始タグと終了タグを挿入する
section.Paragraphs.get_Item(1).ChildObjects.Insert(0, start)
section.Paragraphs.get_Item(2).ChildObjects.Add(end)

# 編集制限を設定する
doc.Protect(ProtectionType.AllowOnlyReading, "password")

# 文書を保存する
doc.SaveToFile("output/編集可能領域.docx")
doc.Close()
```

**結果文書**
![Word文書に編集制限を設定する際の制限解除領域の追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/9197e0a6-c627-0514-b3a6-b1d4ec683048.png)

## Word文書の編集制限の解除
我々は直接編集の制限を解除するには、noneに設定されたタイプのWord文書の編集制限を介して行うことができます。 詳しい手順は以下の通りです。
- **Document** クラスのオブジェクトを作成します。
- **Document.LoadFromFile()** メソッドを使用してWord文書を読み込みます。
- **Document.Protect()** メソッドを使用して、制限タイプをNoneに設定し、制限を解除します。
- **Document.SaveToFile()** メソッドを使用して文書を保存します。

**Python**
```python
from spire.doc import *
from spire.doc.common import *

# Documentクラスのオブジェクトを作成する
doc = Document()

# Word文書を読み込む
doc.LoadFromFile("output/編集の制限.docx")

# 制限タイプをNoProtectionに設定して編集制限を解除する
doc.Protect(ProtectionType.NoProtection)

# 文書を保存する
doc.SaveToFile("output/編集制限の解除.docx")
doc.Close()
```

> **Word文書でPythonを使用して編集制限を設定したり、導入の操作上の編集制限を解除する方法について上記は、より多くのチュートリアルは[Spire.Doc for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.Doc-for-Python/Program-Guide/Spire.Doc-for-Python-Program-Guide-Content.html)ページを見に行くことができます。 また、[Spire.Docのフォーラム](https://www.e-iceblue.com/forum/spire-doc-f6.html)で議論に参加することもできます。**