Wenn man Application Level Plugins für Excel mit C# schreibt, so wird man gleich feststellen, das das "Range" Objekt auf einem Worksheet nicht vorhanden ist bzw. nicht zugreifbar ist - zumindest mit Intellisense. Wenn man jedoch "xxx.Range" eingibt, so wird keine Meldung angezeigt, das es nicht vorhanden ist. Statt dessen kommt eine Meldung das man "get_Range" verwenden soll.
Mit get_Range funktioniert es schlussendlich auch in C#. Wichtig ist hierbei, dass als 2. Parameter "System.Type.Missing" übergeben wird, wenn dieser nicht benötigt wird.
Würde man nun vom Ribbon (Annahme: Klick auf einem Button) auf den ActiveSheet zugreifen, so würde das folgendermaßen aussehen:
void button_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Interop.Excel.Worksheet _sheet = Globals.ThisAddIn.Application.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
Microsoft.Office.Interop.Excel.Range _range;
if (null != _sheet)
{
_range = _sheet.get_Range("A1", System.Type.Missing);
_range.Value2 = ((RibbonButton)sender).Label;
_range.AddComment("Dies wurde automatisiert eingefügt");
}
}