0

ExcelのCOMオブジェクトをC#で使用していて、Excelシートにチェックボックスを動的に挿入し、調子。Excelセルにチェックボックスコントロールをプログラマチックに追加する方法、または既存のチェックボックスをオンまたはオフにする方法

OR

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

答えて

3

マクロをMS Excelで記録することができ、何かを達成するために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 Object Libraryを追加します(私の場合、xx.xはExcel 2010の14.0です)。

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

私はこのことができます願っています:あなたのコード(メインまたはボタンにいくつかのクリックのようないくつかの機能)で 4.どこかには、このコードを追加します。

+0

@vuceticaありがとうございました。しかし、マクロはVBコードなので、これをC#でどのように実現できますか? –

+0

Excelシートの既存のチェックボックスにチェックマークを付ける方法はありますか? –

+0

私はあなたが既にExcelの自動化を行っているところにいくつかのコードがあると思いました。それはおそらく別の質問であり、msdnから始めて、オンラインで多くのリソースを見つけることができます:http://support.microsoft.com/kb/302084 Excelの普及票にチェックボックスを配置しようとはしませんでしたが、一度 "ActiveSheet "オブジェクトを使用すると、このVBAコードをC#呼び出しに変換するのは非常に簡単であることがわかります。これは、VBAコードから、どのメソッドを呼び出す必要があり、どのパラメータ(COMコンポーネントは使用している言語それら)。 –

関連する問題