Excelを使うことで、データを効率よく整理したり、複雑な数式の計算や分析を行うことができます。しかし、チームでの協業が増えるにつれ、データの正確性と完全性を保護することが非常に重要になってきています。Excelのワークシート内では、特定のセルやエリアをロックすることで、セルの内容が不注意に変更されるのを防ぐことができ、重要なデータ、数式、書式設定が誤って変更されるのを避けることができます。このように、ワークシートの一貫性と信頼性を維持することができます。本記事では、Pythonコードを使ってExcelのセルをロックする方法、一括処理と自動化を行う方法について説明します。
本記事で使用する方法は、Spire.XLS for Pythonに基づいています。PyPIからインストールできます: pip install Spire.XLS
。
Pythonを使ってExcelワークシートの特定のセルをロックする
Worksheet.Range[].Style.Locked
プロパティを True
に設定することで、指定したセル範囲をロックすることができます。
注意: Excelのワークシートのすべてのセルはデフォルトでロックされていますが、ワークシートにパスワードが設定されていない場合、セルのロックは機能しません。したがって、特定のセルをロックする際は、まずすべてのセルのロックを解除し、その後、指定したセルをロックし、ワークシートにパスワードを設定する必要があります。
手順は以下のとおりです:
- 必要なモジュールをインポートします。
-
Workbook
インスタンスを作成し、Workbook.LoadFromFile()
メソッドでExcelファイルを読み込みます。 -
Workbook.Worksheets.get_Item()
メソッドで最初のワークシートを取得します。 -
Worksheet.Range.Style.Locked
プロパティをFalse
に設定することで、ワークシートのすべてのセルのロックを解除します。 - 特定のセル範囲の
Worksheet.Range[].Style.Locked
プロパティをTrue
に設定することで、そのセル範囲をロックします。 -
XlsWorksheetBase.Protect()
メソッドを使ってワークシートを保護します。 -
Workbook.SaveToFile()
メソッドを使ってファイルを保存します。
コード例
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ワークシートの特定の列をロックする
特定の列や行をロックする場合も、同様の方法を使えます。Worksheet.Columns[].Style.Locked
または Worksheet.Rows[].Style.Locked
プロパティを True
に設定します。
手順は以下のとおりです:
-
Workbook
インスタンスを作成し、Workbook.LoadFromFile()
メソッドでExcelファイルを読み込みます。 -
Workbook.Worksheets.get_Item()
メソッドで最初のワークシートを取得します。 -
Worksheet.Range.Style.Locked
プロパティをFalse
に設定することで、ワークシートのすべてのセルのロックを解除します。 - 特定の列または行の
Worksheet.Columns[].Style.Locked
またはWorksheet.Rows[].Style.Locked
プロパティをTrue
に設定することで、その列または行をロックします。 -
XlsWorksheetBase.Protect()
メソッドを使ってワークシートを保護します。 -
Workbook.SaveToFile()
メソッドを使ってファイルを保存します。
コード例
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の詳細なチュートリアルは、こちらをご覧ください。