0

C# で Excel COM オブジェクトを使用しており、チェックボックスを動的に Excel シートに挿入し、条件に基づいてチェックまたはチェック解除したいと考えています。

また

Excelシートの既存のチェックボックスをプログラムでチェック済みとしてマークするにはどうすればよいですか。私は周りを見回しましたが、解決策は見つかりませんでした。

4

1 に答える 1

3

あなたはいつでもMSExcelでマクロを記録することができ、それはあなたに何かを達成するためにExcelオブジェクトで何をする必要があるかについての良い考えを与えるでしょう。たとえば、問題のマクロを記録すると、次のコードが表示されます。

ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=65.25, Top:=24, Width:=108, Height:=21). _
        Select

ここから、アクティブなシートにチェックボックスを挿入するために何をする必要があるかがわかることを願っています。

詳細な説明は次のとおりです(Visual Studio 2010およびC#):1。Visual Studioを起動して新しいプロジェクトを作成します(Windowsアプリまたはコンソールアプリ)2。[参照]を右クリックして[参照の追加]を選択します3.COM参照を選択してMicrosoftを追加しますExcel xx.xオブジェクトライブラリ(私の場合、xx.xは14.0で、Excel 2010です)。4.コードのどこかに(メインのような機能やボタンのクリックなど)、次のコードを追加します。

// Start excel
Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = true;

// Get a sheet 
Microsoft.Office.Interop.Excel._Workbook oWB = (Microsoft.Office.Interop.Excel._Workbook)oXL.Workbooks.Add(System.Reflection.Missing.Value);
Microsoft.Office.Interop.Excel._Worksheet oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

// Get ole objects and add new one
Microsoft.Office.Interop.Excel.OLEObjects objs = oSheet.OLEObjects();

// Here is the method that is posted in the answer
Microsoft.Office.Interop.Excel.OLEObject obj = objs.Add("Forms.CheckBox.1", 
    System.Reflection.Missing.Value,
    System.Reflection.Missing.Value,
    false,
    false,
    System.Reflection.Missing.Value,
    System.Reflection.Missing.Value,
    65.25,
    24,
    108,
    21);
// Here, you are making it checked. obj.Object is dynamic, so you will not get help from visual studio, but you know what properties CheckBox can have, right?
obj.Object.Value = true;

これがお役に立てば幸いです。

于 2012-01-20T04:35:53.027 に答える