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;
		}

参考リンク↓
Microsoft.Office.Tools.Excel 名前空間