9

VSTOまたは関連するテクノロジを使用して、Excelワークシートのセルにボタンをプログラムで埋め込み、クリックしたときにC#関数を呼び出すように構成することはできますか?

どのように?

ありがとう。

4

2 に答える 2

11

VSTO ドキュメントのカスタマイズ (つまり、.Net コードが添付されたワークブック) を使用すると、実行時にプロジェクトのワークシートにコントロールを追加および削除できます。次のコードは、この考え方を示しています。

 public partial class Sheet1
 {
     private void Sheet1_Startup(object sender, System.EventArgs e)
     {
        var button = this.Controls.AddButton(10, 10, 50, 50, "My Button");
        button.Text = "My Button";
        button.Click += new EventHandler(button_Click);
     }

     void button_Click(object sender, EventArgs e)
     {
        MessageBox.Show("I was clicked!");
     }

また、VSTO アドインを介してドキュメントにコントロールを動的に追加することもできます。次の行に沿ってコードを使用します ( VSTO フォーラムのユーザーに感謝します)。

var workSheet = (Excel.Worksheet) sheet;
var vstoSheet = workSheet.GetVstoObject();
var button = vstoSheet.Controls.AddButton(50, 50, 100, 50, "Test");
button.Text = "Dynamic Button!";

詳細については、Eric Carter によるこの投稿を確認してください。

于 2010-06-23T05:02:56.520 に答える
3

これは、VSTOアドインで機能するコードです(Mathiasの回答の修正版):

using Excel = Microsoft.Office.Interop.Excel;
using ExcelTools = Microsoft.Office.Tools.Excel;

public void AddButtonToWorksheet()
{
  Excel.Worksheet worksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet;
  ExcelTools.Worksheet vstoSheet = Globals.Factory.GetVstoObject(worksheet);

  Button button = new Button();
  button.Text = "Dynamic Button!";
  vstoSheet.Controls.AddControl(
    button, 50, 50, 100, 50, "TestButton");
}
于 2016-06-21T16:00:55.040 に答える