2012-01-28 23 views
1

Excelにチェックボックスを追加して、 'System.__ ComObject'タイプのCOMオブジェクトを 'Microsoft.Office.Interop.Excel.CheckBox' 、どんな助けもありがとう!私はビジュアルスタジオ2008とオフィス2007を使用してWebアプリケーションを開発しています。エラーは次の行で発生します: - chkBx =(Microsoft.Office.Interop.Excel.CheckBox)obj;COMオブジェクトタイプをExcelにキャストする方法チェックボックスのタイプ

Microsoft.Office.Interop.Excel.OLEObjects objs = (Microsoft.Office.Interop.Excel.OLEObjects)mWSheet1.OLEObjects(System.Reflection.Missing.Value); 

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, 
      234, 
      234, 
      108, 
      21); 

      Microsoft.Office.Interop.Excel.CheckBox chkBx; 
      chkBx = (Microsoft.Office.Interop.Excel.CheckBox)obj; 
      chkBx.Value = true; 
      chkBx.Caption = "xyz"; 

答えて

0

キャストできないようですが、それは単にそのインターフェイスを実装していないためです。 System.__ComObjectがキャストせずにインターフェイスをサポートしているかどうかを確認し、のようにas演算子を使用して例外をスローします。

ワークシートにチェックボックスを追加する方法が間違っているのだろうかと思います。ここに記載されているように、Microsoft.Office.Tools.Excel.ControlCollectionを経由するより一般的な方法はありません:Adding Controls to Office Documents at Run Time

あなたがControlCollectionを使用した場合、私はあなたのコードは次のようなものを見終わると思います:

private void AddCheckBox() 
{ 
    Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(
     this.Application.ActiveWorkbook.Worksheets[1]); 
    System.Windows.Forms.CheckBox checkbox = 
     new System.Windows.Forms.CheckBox(); 
    checkbox.Checked = true; 
    checkbox.Text = "xyz" 
    vstoWorksheet.Controls.AddControl(234, 234, 108, 21, "checkbox1"); 
} 
+0

こんにちはマーティンを、あなたの答えをありがとうございました。私はMicrosoft.Office.Tools.Excel名前空間を参照することができず、私はVSTO 3.0 sp1と.net framework 3.5 sp1とvisual studio 2008 sp1をインストールする必要があることを知りました。ダウンロード用のVSTOのx86バージョンがありますが、どこでx64バージョンを見つけることができますか? –

関連する問題