C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#でExcel上のチェックボックスが変更できなくなった


(過去ログ 113 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■66758 / inTopicNo.1)  C#でExcel上のチェックボックスが変更できなくなった
  
□投稿者/ のぶ (24回)-(2013/05/22(Wed) 17:53:18)

分類:[C#] 

2013/05/22(Wed) 17:54:08 編集(投稿者)
いつもお世話になっています。

以前 No66599 においてC#からExcel上のチェックボックスの状態を変更すると質問し、
一応の解決とはなりましたが、Excelのバージョンを2010から2003に変更したところ
チェックボックス(フォームコントロール)に値が設定出来なくなりました。
検索してみたところ、シート(?)の保護等をしていると同じエラーが発生するという事は書かれていましたが、
保護に関しては一切しておりません。

以下にコードと、エラー内容を載せますので、ご助力頂きたいと思います。
※★位置のValueに設定できません。

VisualStudio2010
Excel2003
参照設定に追加:Microsft Excel 11.0 Object Library

=== コード ===
    public void CheckedInGroupCheckBox(string sheetName, string groupName, string checkboxName)
    {
      Excel.Worksheet thisSheet = sheets[sheetName];
      Excel.Shapes shapes = thisSheet.Shapes;
      Excel.Shape group = null;

      for (int i = 1; i <= shapes.Count; i++)
      {
        group = shapes.Item(i);
        if (group.Type == MsoShapeType.msoGroup && group.Name == groupName)
        {
          break;
        }
      }
      // テスト
      try
      {
        if (group == null)
          throw new ArgumentException("指定されたグループが存在しません。", "groupName");

        Excel.GroupShapes g = group.GroupItems;

        Excel.Shape chk = null;
        for (int i = 1; i <= g.Count; i++)
        {
            chk = g.Item(i);
            if (chk.Name == checkboxName) break;
            ReleaseObj(ref chk);
        }
        //Excel.Shape chk = g.Item(checkboxName);
        dynamic ch = chk.DrawingObject;
        ch.Value = true; // <-★

        ReleaseObj(ref ch);
        ReleaseObj(ref chk);
        ReleaseObj(ref g);
      }
      finally
      {
        ReleaseObj(ref thisSheet);
        ReleaseObj(ref shapes);
        ReleaseObj(ref group);
      }
    }

=== エラー ===
COMExceptionはハンドルされませんでした。
CheckBox クラスの Value プロパティを設定できません。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -