Mit einer VSTO-Dokumentanpassung (d. H. Einem Arbeitsbuch mit angehängtem .Net-Code) können Sie zur Laufzeit in den Arbeitsblättern des Projekts Steuerelemente hinzufügen und entfernen. Der folgende Code zeigt die Idee:
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!");
}
Sie könnten auch über eine VSTO-Add-in Steuerelemente dynamisch zu Dokumenten hinzufügen, entlang dieser Linien (dank Menschen auf der VSTO forum für diesen einen) unter Verwendung von Code:
var workSheet = (Excel.Worksheet) sheet;
var vstoSheet = workSheet.GetVstoObject();
var button = vstoSheet.Controls.AddButton(50, 50, 100, 50, "Test");
button.Text = "Dynamic Button!";
Überprüfen Sie this post by Eric Carter für weitere Informationen.
A-Taste nicht in einer Zelle eingebettet werden kann - Tasten "schweben". Das Beste, was Sie tun können, ist, es zur Entwurfszeit mit einer Zelle auszurichten. – Jay
Versuchen Sie, eine Schaltfläche dynamisch hinzuzufügen? Wie würde das ausgelöst werden? Und würde die C# in einem Add-In aufgerufen werden? Das klingt nach einem komplexen Setup, und mir ist nicht klar, warum Sie das tun möchten. Warum haben Sie nicht einfach ein VSTO-Add-In und ein Menü oder ein Menüband, das die Funktion von jedem Arbeitsblatt aus verfügbar macht? – Mathias
@Jay: Ich kann damit leben. Gibt es Tipps, wie Sie eine Schaltfläche über meinem Arbeitsblatt platzieren können? @Mathias: Ja, ich möchte die Schaltflächen dynamisch hinzufügen und die C# -Rückrufe werden in einem Add-In sein. Der Zweck meines Add-Ins ist es, dem Benutzer zu helfen, 'Formulare' in einer Tabelle auszugeben, und ich möchte, dass einige der Formulare Schaltflächen enthalten. – mcoolbeth