Create Excel AddIn using C Sharp oder VB (.NET)
Hallo,
ich möchte einen Add In für Excel 2007 erstellen. Und ich habe folgende Frage:
wie kann ich auf die Zeilen und Spalten in einer Excel Worksheet zugreifen?
Ich habe die Entwicklungsumgebung:
Microsoft Visual Studio 2010 Prof.
Gruß
Kaiser
ich möchte einen Add In für Excel 2007 erstellen. Und ich habe folgende Frage:
wie kann ich auf die Zeilen und Spalten in einer Excel Worksheet zugreifen?
Ich habe die Entwicklungsumgebung:
Microsoft Visual Studio 2010 Prof.
Gruß
Kaiser
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 168671
Url: https://administrator.de/contentid/168671
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
7 Kommentare
Neuester Kommentar
2sec
http://lmgtfy.com/?q=tutorial+create+excel+addin+in+C%23
einer der interessanten Links : http://www.add-in-express.com/support/addin-c-sharp.php
vg
http://lmgtfy.com/?q=tutorial+create+excel+addin+in+C%23
einer der interessanten Links : http://www.add-in-express.com/support/addin-c-sharp.php
vg
Hallo,
hier erst einmal ein kleines Beispiel wie man auf die Zellen unter C# zugreift:
Als erstes musst Du den Excel.Interop Namespace einbinden. Für einen einfacheren Zugriff benenne ich gerne immer den Namespace, so dass man später einfacher auf die entsprechenden Klassen zugreifen kann:
using Excel = Microsoft.Office.Interop.Excel;
Und dann ist eigentlich fast alles schon ähnlich wie bei der VBA-Macroprogrammierung.
1. (Excel)Applicationsobject besorgen
2. Vom Application-Object ein Arbeitsblatt holen (im Beispiel das ActiveSheet)
3. Range definieren
4. Mit dem Range dann die Zellen bearbeiten
Bei C# ist zu beachten, dass es keine optionalen Argumente kennt, daher müssen alle Argumente angegeben werden. Wird ein Argument nicht benötigt, so muss trotzdem ein Argument vom Typ Missing übergeben werden. Bei einigen Methodenaufrufen kommt da echt schreibarbeit auf. Dies ist bei VB.NET nicht der Fall.
Hoffe es konnte Dir damit geholfen werden.
Gruß
hier erst einmal ein kleines Beispiel wie man auf die Zellen unter C# zugreift:
using System;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelAddIn1
{
public class MachIrgendetwas
{
private object missing = Type.Missing;
public void ZahlenAuffüllen()
{
Excel.Application app = ExcelAddIn1.Globals.ThisAddIn.Application;
Excel.Worksheet ws = app.ActiveSheet;
Excel.Range rng = ws.Range["A1", missing];
for (int i = 1; i <= 10; i++)
{
rng.Value = i;
rng = rng.Offset[1, 0];
}
rng = null;
ws = null;
app = null;
}
}
}
Als erstes musst Du den Excel.Interop Namespace einbinden. Für einen einfacheren Zugriff benenne ich gerne immer den Namespace, so dass man später einfacher auf die entsprechenden Klassen zugreifen kann:
using Excel = Microsoft.Office.Interop.Excel;
Und dann ist eigentlich fast alles schon ähnlich wie bei der VBA-Macroprogrammierung.
1. (Excel)Applicationsobject besorgen
2. Vom Application-Object ein Arbeitsblatt holen (im Beispiel das ActiveSheet)
3. Range definieren
4. Mit dem Range dann die Zellen bearbeiten
Bei C# ist zu beachten, dass es keine optionalen Argumente kennt, daher müssen alle Argumente angegeben werden. Wird ein Argument nicht benötigt, so muss trotzdem ein Argument vom Typ Missing übergeben werden. Bei einigen Methodenaufrufen kommt da echt schreibarbeit auf. Dies ist bei VB.NET nicht der Fall.
Hoffe es konnte Dir damit geholfen werden.
Gruß
Hallo,
sind Erfahrung in c#-Programmierung bereits vorhanden?! ansonsten -> OpenBook c# 2010 als kleiner Tipp
Das Schlüsselwort "partial" dient dazu eine Klasse auf mehreren physikalischen Dateien zu verteilen. Grund: Wenn z.B. Klassen automatisch vom Designer generiert werden, machen manuelle Änderungen an den Klassen keinen Sinn, da diese Änderungen beim nächsten erstellen wieder gelöscht/überschrieben würden. Schreibt man den Code in eine weiter "partielle" Datei, bleibt er erhalten. Beim Kompilieren werden dann alle Teile zu einer Klasse zusammengeführt.
ThisAddin.cs ist die Einstiegsklasse, so ne Art main. Unter anderen wird dort das Ribbon eingebunden oder Code der beim Start/Beenden von Excel ausgeführt werden soll. Damit das Ribbon in Excel hinzugefügt wird muss folgender Funktionsrumpf eingefügt werden:
Ribbon1.Designer.cs (Ribbon1.cs [Entwurf]) enthält den Code, der automatisch vom Designer erstellt wird. Hier sollten keine Änderungen vorgenommen werden. Im Entwurf kannst du dann über Drag&Drop das Menü zusammenstellen. Die Eventhandler z.B. der Buttons aus deinem Menü landen dann in der Ribbon1.cs. Von dort können dann die Methoden aufgerufen werden, z.B.:
Wobei ich lieber die XML-Variente des Menübands benutze. Dort gibt es dann nur
Ribbon1.xml (Menüaufbau per XML)
Ribbon1.cs (Eventhandler)
Als Beispiel für XML
Der obige Code erstellt ein neues Tab mit einer Gruppe und in der Gruppe befindet sich ein Button. Soll eine neue Gruppe z.B. in einer vorhanden Tab erstellt werden so muss das Tag id in idMso geändert werden z.B. idMso="TabHome" für das Start-Tab.
Die Ribbon1.cs sieht wie folgt aus:
Bei den ... steht der bereits vorhanden Code. Der Methodenrumpf für die Eventhandler ist "public void Methodenname(Office.IRibbonControl ctrl)".
Ich hoffe es hilft Dir erst einmal weiter.
Gruß
sind Erfahrung in c#-Programmierung bereits vorhanden?! ansonsten -> OpenBook c# 2010 als kleiner Tipp
Das Schlüsselwort "partial" dient dazu eine Klasse auf mehreren physikalischen Dateien zu verteilen. Grund: Wenn z.B. Klassen automatisch vom Designer generiert werden, machen manuelle Änderungen an den Klassen keinen Sinn, da diese Änderungen beim nächsten erstellen wieder gelöscht/überschrieben würden. Schreibt man den Code in eine weiter "partielle" Datei, bleibt er erhalten. Beim Kompilieren werden dann alle Teile zu einer Klasse zusammengeführt.
ThisAddin.cs ist die Einstiegsklasse, so ne Art main. Unter anderen wird dort das Ribbon eingebunden oder Code der beim Start/Beenden von Excel ausgeführt werden soll. Damit das Ribbon in Excel hinzugefügt wird muss folgender Funktionsrumpf eingefügt werden:
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new Ribbon1(); //Name der Ribbon-Klasse
}
Ribbon1.Designer.cs (Ribbon1.cs [Entwurf]) enthält den Code, der automatisch vom Designer erstellt wird. Hier sollten keine Änderungen vorgenommen werden. Im Entwurf kannst du dann über Drag&Drop das Menü zusammenstellen. Die Eventhandler z.B. der Buttons aus deinem Menü landen dann in der Ribbon1.cs. Von dort können dann die Methoden aufgerufen werden, z.B.:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
MachIrgendetwas m = new MachIrgendetwas();
m.ZahlenAuffüllen();
}
Wobei ich lieber die XML-Variente des Menübands benutze. Dort gibt es dann nur
Ribbon1.xml (Menüaufbau per XML)
Ribbon1.cs (Eventhandler)
Als Beispiel für XML
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab id="MyTab" label="Meine AddIns">
<group id="MyGroup" label="Meine Gruppe">
<button id="MyButton" label="Mach Etwas" onAction="MyButton_Click" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Der obige Code erstellt ein neues Tab mit einer Gruppe und in der Gruppe befindet sich ein Button. Soll eine neue Gruppe z.B. in einer vorhanden Tab erstellt werden so muss das Tag id in idMso geändert werden z.B. idMso="TabHome" für das Start-Tab.
Die Ribbon1.cs sieht wie folgt aus:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using Office = Microsoft.Office.Core;
namespace ExcelAddIn1
{
[ComVisible(true)]
public class Ribbon1 : Office.IRibbonExtensibility
{
...
#region Menübandrückrufe
public void MyButton_Click(Office.IRibbonControl ctrl)
{
MachIrgendetwas m = new MachIrgendetwas();
m.ZahlenAuffüllen();
}
...
#endregion
...
}
}
Bei den ... steht der bereits vorhanden Code. Der Methodenrumpf für die Eventhandler ist "public void Methodenname(Office.IRibbonControl ctrl)".
Ich hoffe es hilft Dir erst einmal weiter.
Gruß