0
0

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

Last updated at Posted at 2024-06-07

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

本記事で使用する方法は、Spire.XLS for Pythonに基づいています。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() メソッドを使ってファイルを保存します。

コード例

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のセルをロック

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() メソッドを使ってファイルを保存します。

コード例

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の詳細なチュートリアルは、こちらをご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0