C# 遅延バインディングを使用してExcelのセルにプルダウンを表示させる方法

C#

1string cellAddress = "C3";2// Rangeを指定3dynamic oRange = m_oSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null 4 , m_oSheet, new object[] { cellAddress });5 6string[] dropdownItems = new string[] { "選択肢11", "選択肢22", "選択肢33" };7 8// Validationが存在するかチェック9dynamic validation = oRange.Validation;10bool hasValidation = validation != null;11 12if (hasValidation)13{14 dynamic oValidation = oRange.GetType().InvokeMember("Validation", BindingFlags.GetProperty, null, oRange, null);15 dynamic oDelete = oValidation.GetType().InvokeMember("Delete", BindingFlags.GetProperty, null, oRange, null);16}17 18dynamic oRange2 = m_oSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null 19 , m_oSheet, new object[] { cellAddress });20dynamic oValidation2 = oRange2.GetType().InvokeMember("Validation", BindingFlags.GetProperty, null, oRange2, null);21 22 23// 遅延バインディングでデータバリデーションを設定24oValidation2.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, oValidation2, new object[]25{26 3, // Excel.XlDVType.xlValidateList27 1, // Excel.XlFormatConditionOperator.xlBetween ではなく Type.Missing28 1, // Excel.XlValueOperator.xlBetween ではなく Type.Missing29 "選択肢1,選択肢2,選択肢3",30 1 // Excel.XlDataBarBorderType.xlDataBarBorderSolid ではなく Type.Missing31});32 33// セルにプルダウンを表示させる34oRange2.GetType().InvokeMember("Select", BindingFlags.InvokeMethod, null, oRange2, null);

コメントを投稿

0 コメント