C#  Excelでセルのロックとロック解除

<h1><strong>はじめに</strong></h1>
<p>シートの保護をするには、最もよく使う方法がセルをロックするものでしょう。セルをロックすることで、「シートを勝手に編集してはいけないよ」というニュアンスになるので、シートのデータを不正編集したりすることを防ぐことができます。さあ、今日は<strong><a href="https://www.e-iceblue.com/Introduce/excel-for-net-introduce.html">Spire.XLS for .NET</a></strong>というライブラリを利用してエクセルでセルのロックとロック解除について紹介していきましょう。</p>
<h1><strong>Spire.XLS for .NET</strong><strong>とは？</strong></h1>
<p><strong><a href="https://www.e-iceblue.com/Introduce/excel-for-net-introduce.html">Spire.XLS for .NET</a></strong>は、開発者がC#やVB.NETプラットホームでExcelの文書ファイルを迅速かつ高品質で作成・編集・変換・印刷するために設計された専門的な Excelライブラリです。</p>
<p>中には、商用版と無料版の<strong><a href="https://www.e-iceblue.com/Introduce/excel-for-net-introduce.html">Free Spire.XLS for .NET</a></strong>があります。<strong><a href="https://www.e-iceblue.com/Introduce/excel-for-net-introduce.html">Spire.XLS for .NET</a></strong>は商用版ではありますが、基本的な機能を搭載しているので、無料試用で日常の仕事にはもう結構だと思います。</p>
<h1><strong>下準備</strong></h1>
<p>1.E-iceblueの公式サイトから<strong><a href="https://www.e-iceblue.com/Download/download-word-for-net-now.html">Spire.XLS</a></strong>をダウンロードしてください。</p>
<p>2.Visual Studioを起動して新規プロジェクトを作成してから、インストールされたファイルで相応しいSpire.XLS.dllを参照に追加してください。</p>
<h1><strong>メソッド説明</strong></h1>
<p>下記の表には、この機能を実行するには必要なメソッドやプロパティが含まれています。</p>
<table>
<tbody>
<tr>
<td width="277">
<p>　　　　 アイテム</p>
</td>
<td width="277">
<p>　　　　　<strong>説明</strong></p>
</td>
</tr>
<tr>
<td width="277">
<p>Workbook.LoadFromFile</p>
</td>
<td width="277">
<p>Loads the file.</p>
</td>
</tr>
<tr>
<td width="277">
<p>Workbook.SaveToFile</p>
</td>
<td width="277">
<p>Saves the file.</p>
</td>
</tr>
<tr>
<td width="277">
<p>XlsWorksheetBase.Protect Method</p>
</td>
<td width="277">
<p>Protects worksheet with password.protect the sheet except select lock/unlock cells.</p>
</td>
</tr>
<tr>
<td width="277">
<p>XlsWorksheetBase.Unprotect Method</p>
</td>
<td width="277">
<p>Unprotects this wokrsheet.</p>
</td>
</tr>
</tbody>
</table>
<h1><strong>セルロック</strong></h1>
<p>下記はセルをロックするステップとコードになります。</p>
<ol>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/T_Spire_Xls_Workbook.htm">Workbook</a></strong>オブジェクトを作成します。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/Overload_Spire_Xls_Workbook_LoadFromFile.htm">Workbook.LoadFromFile</a></strong>メソッドでファイルをロードします。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/P_Spire_Xls_Worksheet_Workbook.htm">Worksheet.Workbook </a></strong>プロパティでシートを取得します。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/P_Spire_Xls_CellStyleObject_Locked.htm">CellStyleObject.Locked </a></strong>プロパティでセルをロックします。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/Overload_Spire_Xls_Core_Spreadsheet_XlsWorksheetBase_Protect.htm">XlsWorksheetBase.Protect</a></strong>メソッドでシートを保護します。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/Overload_Spire_Xls_Workbook_SaveToFile.htm">Workbook.SaveToFile</a></strong><strong>で</strong>ファイルを保存します。</li>
</ol>
<p><strong>　　</strong></p>
```C#
using Spire.Xls;
namespace ConsoleApp13
{
    class Program
    {
        static void Main(string[] args)
        {
            //Excelロードします。
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Input.xlsx");

            //シートをゲットします。
            Worksheet sheet = workbook.Worksheets[0];

            //シートのセルをロック解除します。
            sheet.Range.Style.Locked = false;
            //セルをロックします。
            sheet.Range["A1:B3"].Style.Locked = true;

            //パスワードで保護します。
            sheet.Protect("123", SheetProtectionType.All);

            //保存します。
            workbook.SaveToFile("LockCells.xlsx");
        }
    }
}
```


<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20211027/20211027123654.png" alt="f:id:lendoris:20211027123654p:plain" width="554" height="418" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<h1><strong>セルのロック解除</strong></h1>
<p>下記はセルをロック解除するステップとコードになります。</p>
<ol>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/T_Spire_Xls_Workbook.htm">Workbook</a></strong>オブジェクトを作成します。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/Overload_Spire_Xls_Workbook_LoadFromFile.htm">Workbook.LoadFromFile</a></strong>メソッドでファイルをロードします。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/P_Spire_Xls_Worksheet_Workbook.htm">Worksheet.Workbook </a></strong>プロパティでシートを取得します。</li>
<li><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/Overload_Spire_Xls_Core_Spreadsheet_XlsWorksheetBase_Unprotect.htm"><strong>XlsWorksheetBase.</strong><strong>Unprotect</strong></a>メソッドでシートを保護解除します。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/P_Spire_Xls_CellStyleObject_Locked.htm">CellStyleObject.Locked </a></strong>プロパティでセルをロックします。</li>
<li><strong><a href="https://www.e-iceblue.com/apireference/net/Spire.XLS/html/Overload_Spire_Xls_Workbook_SaveToFile.htm">Workbook.SaveToFile</a></strong><strong>で</strong>ファイルを保存します。</li>
</ol>
<p> </p>

```C#
using Spire.Xls;

namespace ConsoleApp13
{
    class Program
    {
        static void Main(string[] args)
        {
            //Excelをロードします。
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("LockCells.xlsx");

            //シートをゲットします。
            Worksheet sheet = workbook.Worksheets[0];

            //ロック解除します。
            sheet.Unprotect("123");

            //セルロックを解除します。
            sheet.Range["A1:B3"].Style.Locked = false;

            //保存します。
            workbook.SaveToFile("UnlockCells.xlsx");
        }
    }
}
```


<h1><strong>最後に</strong></h1>
<p>ここまで読んでくださってありがとうございます！もし<strong><a href="https://www.e-iceblue.com/Introduce/excel-for-net-introduce.html">Spire.XLS for .NET</a></strong>を利用している時にご不明なところがございましたら、ぜひご連絡ください</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>