作成日: 2026/02/19 最終更新日: 2026/04/28
文書種別
使用方法
詳細
SheetView の Protect プロパティを True に設定すると、SPREADデザイナ上でシートの操作ができなくなります。
シートが保護された状態でもソートやフィルター操作を可能にする方法として、SheetView クラスの Protect プロパティの代わりに、GrapeCity.Spreadsheet.IWorksheet インターフェースの Protect メソッドを使用する方法が考えられます。
この方法を使用する場合は、以下のヘルプに記載されているとおり、LegacyBehaviors プロパティの Protect フラグが 設定されていない場合にのみ有効となりますので、ご注意ください。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの作成
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn() {
New DataColumn("A"),
New DataColumn("B")
})
Dim rnd As New Random()
For i As Integer = 0 To 9
dt.Rows.Add($"A{i Mod 3}", $"B{rnd.Next(1, 100)}")
Next
dt.AcceptChanges()
' シートの設定
Dim sheet = FpSpread1.ActiveSheet
sheet.ColumnCount = 2
sheet.Columns(0).DataField = "A"
sheet.Columns(1).DataField = "B"
sheet.AutoGenerateColumns = False
sheet.DataAutoCellTypes = False
sheet.DataAutoSizeColumns = False
sheet.DataSource = dt
' フィルタとソートの設定
sheet.AutoFilterMode = AutoFilterMode.EnhancedContextMenu
sheet.AutoSortEnhancedContextMenu = True
sheet.Columns(0, sheet.Columns.Count - 1).AllowAutoFilter = True
sheet.Columns(0, sheet.Columns.Count - 1).AllowAutoSort = True
' ロックの設定
sheet.Protect = False
sheet.ColumnHeader.Rows(0).Locked = False
sheet.RowHeader.Columns(0).Locked = False
' IWorksheet を使用して保護(ソートとフィルターは許可)
sheet.AsWorksheet().Protect(
WorksheetLocks.All Xor (WorksheetLocks.AutoFilter Or WorksheetLocks.Sort)
)
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// データの作成
var dt = new DataTable();
dt.Columns.AddRange(new[] { new DataColumn("A"), new DataColumn("B") });
var rnd = new Random();
for (var i = 0; i < 10; i++)
{
dt.Rows.Add($"A{i % 3}", $"B{rnd.Next(1, 100)}");
}
dt.AcceptChanges();
// シートの設定
var sheet = fpSpread1.ActiveSheet;
sheet.ColumnCount = 2;
sheet.Columns[0].DataField = "A";
sheet.Columns[1].DataField = "B";
sheet.AutoGenerateColumns = false;
sheet.DataAutoCellTypes = false;
sheet.DataAutoSizeColumns = false;
sheet.DataSource = dt;
// フィルタとソートの設定
sheet.AutoFilterMode = AutoFilterMode.EnhancedContextMenu;
sheet.AutoSortEnhancedContextMenu = true;
sheet.Columns[0, sheet.Columns.Count - 1].AllowAutoFilter = true;
sheet.Columns[0, sheet.Columns.Count - 1].AllowAutoSort = true;
// ロックの設定
sheet.Protect = false;
sheet.ColumnHeader.Rows[0].Locked = false;
sheet.RowHeader.Columns[0].Locked = false;
// IWorksheet を使用して保護(ソートとフィルターは許可)
sheet.AsWorksheet().Protect(WorksheetLocks.All ^ (WorksheetLocks.AutoFilter | WorksheetLocks.Sort));
}