| ■No66624 (魔界の仮面弁士 さん) に返信 ご回答ありがとうございます。 また、お返事遅くなり申し訳ありません。
>>Excelのシート上にグループ化されたチェックボックスがあり > フォームコントロールのチェックボックスでしょうか。 > それともActiveXのチェックボックスでしょうか。 お察し頂けた様にフォームコントロールのものを使用しています。
> 該当する Shape にまで行き当たったら、あとは上記のように、Shape の DrawingObject プロパティから > 操作対象のチェックボックス型を得ることができるはずです。 chkを取得後、chkからDrawingObjectプロパティからさらにオブジェクトを取得することによって チェック状態の変更に成功いたしました。
書き換えたコードも掲載させていただきます。 一応目的は果たせたので解決済みとしますが、何か突っ込みどころがあるようでしたらお願いいたします。
public void CheckedInGroupCheckBox(string sheetName, string groupName, string checkboxName) { Excel.Worksheet sheet = sheets[sheetName]; Excel.Shapes shapes = sheet.Shapes; Excel.Shape group = null; Excel.Shape chk = null; Excel.GroupShapes g = null; for (int i = 1; i <= shapes.Count; i++) //Count未満でなぜ取得できていたのか・・・ { group = shapes.Item(i); if (group.Name == groupName) break; } g = group.GroupItems; chk = g.Item(checkboxName); var ch = chk.DrawingObject; //DrawingObjectから取得 ch.Value = true; //取得したオブジェクトに対してValueプロパティでチェック状態を変更する
ReleaseObj(ref sheet); ReleaseObj(ref shapes); ReleaseObj(ref group); ReleaseObj(ref g); ReleaseObj(ref chk); }
|