Pythonコードを使ってExcelのセルをロックする

Excelを使うことで、データを効率よく整理したり、複雑な数式の計算や分析を行うことができます。しかし、チームでの協業が増えるにつれ、データの正確性と完全性を保護することが非常に重要になってきています。Excelのワークシート内では、特定のセルやエリアをロックすることで、セルの内容が不注意に変更されるのを防ぐことができ、重要なデータ、数式、書式設定が誤って変更されるのを避けることができます。このように、ワークシートの一貫性と信頼性を維持することができます。本記事では、Pythonコードを使って**Excelのセルをロックする方法**、一括処理と自動化を行う方法について説明します。

- **[Pythonを使ってExcelワークシートの特定のセルをロックする](#pythonを使ってexcelワークシートの特定のセルをロックする)**
- **[Pythonを使ってExcelワークシートの特定の列をロックする](#pythonを使ってexcelワークシートの特定の列をロックする)**
- **[Pythonを使ってExcelワークシートの特定の列をロックする](#pythonを使ってexcelワークシートの特定の列をロックする)**

本記事で使用する方法は、[Spire.XLS for Python](https://www.e-iceblue.com/Download/Spire-XLS-Python.html)に基づいています。PyPIからインストールできます: `pip install Spire.XLS`。

[無料ライセンスを申請する]()

## Pythonを使ってExcelワークシートの特定のセルをロックする
`Worksheet.Range[].Style.Locked` プロパティを `True` に設定することで、指定したセル範囲をロックすることができます。
注意: Excelのワークシートのすべてのセルはデフォルトでロックされていますが、ワークシートにパスワードが設定されていない場合、セルのロックは機能しません。したがって、特定のセルをロックする際は、まずすべてのセルのロックを解除し、その後、指定したセルをロックし、ワークシートにパスワードを設定する必要があります。
手順は以下のとおりです:
1. 必要なモジュールをインポートします。 
2. `Workbook` インスタンスを作成し、`Workbook.LoadFromFile()` メソッドでExcelファイルを読み込みます。
3. `Workbook.Worksheets.get_Item()` メソッドで最初のワークシートを取得します。
4. `Worksheet.Range.Style.Locked` プロパティを `False` に設定することで、ワークシートのすべてのセルのロックを解除します。
5. 特定のセル範囲の `Worksheet.Range[].Style.Locked` プロパティを `True` に設定することで、そのセル範囲をロックします。
6. `XlsWorksheetBase.Protect()` メソッドを使ってワークシートを保護します。
7. `Workbook.SaveToFile()` メソッドを使ってファイルを保存します。

**コード例**
```python
from spire.xls import *
from spire.xls.common import *

# Workbookのインスタンスを作成し、サンプルファイルをロードします
workbook = Workbook()
workbook.LoadFromFile("サンプル.xlsx")

# 最初のワークシートを取得します
sheet = workbook.Worksheets.get_Item(0)

# ワークシートの使用範囲内のすべてのセルのロックを解除します
sheet.Range.Style.Locked = False

# ワークシートの特定のセルをロックします
sheet.Range["A2"].Style.Locked = True

# ワークシートの特定のセル範囲をロックします
sheet.Range["F3:H4"].Style.Locked = True

# ワークシートをパスワードで保護します
sheet.Protect("123456", SheetProtectionType.All)

# 結果ファイルを保存します
workbook.SaveToFile("output/ロックされたExcelのセル.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
```

**結果**
![Pythonコードを使ってExcelのセルをロック](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/2fde06b3-1591-06b7-9ebd-0c117d9279b3.png)

## Pythonを使ってExcelワークシートの特定の列をロックする
特定の列や行をロックする場合も、同様の方法を使えます。`Worksheet.Columns[].Style.Locked` または `Worksheet.Rows[].Style.Locked` プロパティを `True` に設定します。
手順は以下のとおりです:
1. `Workbook` インスタンスを作成し、`Workbook.LoadFromFile()` メソッドでExcelファイルを読み込みます。
2. `Workbook.Worksheets.get_Item()` メソッドで最初のワークシートを取得します。
3. `Worksheet.Range.Style.Locked` プロパティを `False` に設定することで、ワークシートのすべてのセルのロックを解除します。
4. 特定の列または行の `Worksheet.Columns[].Style.Locked` または `Worksheet.Rows[].Style.Locked` プロパティを `True` に設定することで、その列または行をロックします。
5. `XlsWorksheetBase.Protect()` メソッドを使ってワークシートを保護します。
6. `Workbook.SaveToFile()` メソッドを使ってファイルを保存します。

**コード例**
```python
from spire.xls import *
from spire.xls.common import *

# Workbookのインスタンスを作成し、サンプルファイルをロードします
workbook = Workbook()
workbook.LoadFromFile("サンプル.xlsx")

# 最初のワークシートを取得します
sheet = workbook.Worksheets.get_Item(0)

# ワークシートの使用範囲内のすべてのセルのロックを解除します
sheet.Range.Style.Locked = False

# ワークシートの最初の列をロックします
sheet.Columns[0].Style.Locked = True

# ワークシートの2行目をロックします
sheet.Rows[1].Style.Locked = True

# ワークシートをパスワードで保護します
sheet.Protect("123456", SheetProtectionType.All)

# 結果ファイルを保存します
workbook.SaveToFile("output/ロックされたExcelの行と列.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
```

本記事では、Pythonコードを使ってExcelワークシート内の特定のセル、列、行をロックする方法について説明しました。

[Spire.XLS for Pythonの詳細なチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html)は、こちらをご覧ください。