とりあえずですけれども このページをアンテナに追加

はてなダイアリー:とりあえずなんですけどね
ついったー:Twitter / toriaezu
たんぶらー:For the time being...
iKnow!:iKnow! / toriaezu
自己紹介はこちら

2009-05-12

C#から遅延バインディングでEXCELのシート保護をする

| 14:27 | C#から遅延バインディングでEXCELのシート保護をする - とりあえずですけれども を含むブックマーク はてなブックマーク - C#から遅延バインディングでEXCELのシート保護をする - とりあえずですけれども C#から遅延バインディングでEXCELのシート保護をする - とりあえずですけれども のブックマークコメント

自分のブログから引用。こっちにも書いておく↓

かなり悪戦苦闘してようやく実装できた

		/// <summary>
		/// ワークシートを保護する
		/// </summary>
		/// <param name="pXlBook">ワークブック</param>
		/// <param name="pXlSheet">ワークシート</param>
		public static void XlsSheetProtect(object pXlBook, object pXlSheet)
		{
			try
			{
				object [] Parameters;
			
				// シート保護時のパラメータ設定(行の挿入は許可するしない、とか)
				Parameters = new object[16];
				Parameters[0] = Type.Missing;
				Parameters[1] = false;
				Parameters[2] = true;
				Parameters[3] = true;
				Parameters[4] = true;
				Parameters[5] = false;
				Parameters[6] = false;
				Parameters[7] = false;
				Parameters[8] = false;
				Parameters[9] = false;
				Parameters[10] = false;
				Parameters[11] = false;
				Parameters[12] = false;
				Parameters[13] = false;
				Parameters[14] = false;
				Parameters[15] = false;
			
				// シートを保護する
				pXlSheet.GetType().InvokeMember("Protect", BindingFlags.InvokeMethod, null, pXlSheet, Parameters);
			}
			catch(System.Exception ex)
			{
				throw ex;
			}

			return;
		}

追記↓

Excelのバージョンによって渡すパラメータの数が異なるので注意。ハマるところなのでチェケラ

Excel2003、Excel2007のパラメータは全部で16個。

パラメータ

Password

ワークシートのパスワードです (大文字と小文字を区別します)。この引数を省略すると、パスワードを使用せずにワークシートの保護を解除できます。それ以外の場合、ワークシートの保護を解除するにはパスワードを入力する必要があります。パスワードを忘れると、ワークシートの保護を解除できなくなります。パスワードとそれに対応するドキュメント名の一覧を安全な場所に保管することをお勧めします。

DrawingObjects

図形を保護する場合は true です。既定値は、false です。

Contents

ロックされたセルの内容を保護する場合は true です。既定値は、true です。

Scenarios

シナリオを保護する場合は true です。既定値は、true です。

UserInterfaceOnly

ユーザー インターフェイスを保護し、マクロを保護しない場合は true です。この引数が省略されると、マクロとユーザー インターフェイスの両方が保護されます。

AllowFormattingCells

true に設定すると、保護されているワークシート内の任意のセルを書式設定できます。既定値は、false です。

AllowFormattingColumns

true に設定すると、保護されているワークシート内の任意の列を書式設定できます。既定値は、false です。

AllowFormattingRows

true に設定すると、保護されているワークシート内の任意の行を書式設定できます。既定値は、false です。

AllowInsertingColumns

true に設定すると、保護されているワークシートに列を挿入できます。既定値は、false です。

AllowInsertingRows

true に設定すると、保護されているワークシートに行を挿入できます。既定値は、false です。

AllowInsertingHyperlinks

true に設定すると、ワークシートにハイパーリンクを挿入できます。既定値は、false です。

AllowDeletingColumns

true に設定すると、削除する列のすべてのセルのロックを解除して、保護されているワークシートの列を削除できます。既定値は、false です。

AllowDeletingRows

true に設定すると、削除する行のすべてのセルのロックを解除して、保護されているワークシートの行を削除できます。既定値は、false です。

AllowSorting

true に設定すると、保護されているワークシートを並べ替えることができます。並べ替えの範囲内にあるすべてのセルのロックが解除されるか、保護が解除されている必要があります。既定値は、false です。

AllowFiltering

true に設定すると、保護されているワークシートにフィルタを設定できます。ユーザーは、フィルタ条件を変更することはできますが、オートフィルタを有効または無効にすることはできません。既存のオートフィルタフィルタを設定することはできます。既定値は、false です。

AllowUsingPivotTables

true に設定すると、保護されているワークシートでピボット テーブル レポートを使用できます。既定値は、false です。

Worksheet.Protect メソッド (Microsoft.Office.Tools.Excel)

Excel2000のパラメータは全部で5個。

構文 Object.Protect(Password, DrawingObjects, Contents, Scenarios,

UserInterfaceOnly) シートの保護

Object.Unprotect(Password) シートの保護解除

設定項目 内容

Object Worksheet, Chartオブジェクト

Password 保護解除の際に必要なパスワード [省略可能]

DrawingObjects 描画オブジェクトを保護する(True)、

しない(False:規定値)[省略可能]

Contents シートの内容を保護する(True:規定値)、

しない(False)[省略可能]

Scenarios シナリオを保護する(True:規定値)、しない(False)

対象がワークシートの場合のみ有効 [省略可能]

UserInterfaceOnly マクロからの変更は可能にする(True)、

マクロからも変更できない(False:規定値) [省略可能]

Excel VBA を学ぶなら moug モーグ | 即効テクニック | シートを保護する(Protect/Unprotectメソッド)