Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Create Excel AddIn using C Sharp oder VB (.NET)

Mitglied: KaiserQQ7

KaiserQQ7 (Level 1) - Jetzt verbinden

27.06.2011 um 10:46 Uhr, 9687 Aufrufe, 7 Kommentare

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
Mitglied: opalka
28.06.2011 um 14:13 Uhr
Hallo,

hier erst einmal ein kleines Beispiel wie man auf die Zellen unter C# zugreift:

01.
using System; 
02.
using Excel = Microsoft.Office.Interop.Excel; 
03.
 
04.
namespace ExcelAddIn1 
05.
06.
    public class MachIrgendetwas 
07.
08.
        private object missing = Type.Missing; 
09.
 
10.
        public void ZahlenAuffüllen() 
11.
12.
            Excel.Application app = ExcelAddIn1.Globals.ThisAddIn.Application; 
13.
            Excel.Worksheet ws = app.ActiveSheet; 
14.
            Excel.Range rng = ws.Range["A1", missing]; 
15.
            for (int i = 1; i <= 10; i++) 
16.
17.
                rng.Value = i; 
18.
                rng = rng.Offset[1, 0]; 
19.
20.
            rng = null; 
21.
            ws = null; 
22.
            app = null; 
23.
24.
25.
}
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ß
Bitte warten ..
Mitglied: KaiserQQ7
29.06.2011 um 13:44 Uhr
Hallo,

dankeschön fur die Hilfe.

Schöne Grüße
Kaiser
Bitte warten ..
Mitglied: KaiserQQ7
29.06.2011 um 14:13 Uhr
Unter welchem Datei soll das eigentlich geschrieben werden?
und wie viele Klassen benötige ich insgesamt?

Ich habe einen neuen Project "Excell Add-In" erstellt und ein neues Element "Menüband (Visueller Designer)" dazu hinzugefügt.
und dann bekomme ich die folgende ".cs" File:

ThisAddIn.cs
Ribbon1.cs
Ribbon1.Designer.cs
Ribbon1.cs [Entwurf]

und alle fangen mit "partial class ------ "


Gruß
Bitte warten ..
Mitglied: opalka
30.06.2011 um 00:04 Uhr
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:

01.
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
02.
03.
        return new Ribbon1(); //Name der Ribbon-Klasse 
04.
}


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.:

01.
private void button1_Click(object sender, RibbonControlEventArgs e) 
02.
03.
        MachIrgendetwas m = new MachIrgendetwas(); 
04.
        m.ZahlenAuffüllen(); 
05.
}
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

01.
<?xml version="1.0" encoding="UTF-8"?> 
02.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load"> 
03.
  <ribbon> 
04.
    <tabs> 
05.
      <tab id="MyTab" label="Meine AddIns"> 
06.
        <group id="MyGroup" label="Meine Gruppe"> 
07.
          <button id="MyButton" label="Mach Etwas" onAction="MyButton_Click" /> 
08.
        </group> 
09.
      </tab> 
10.
    </tabs> 
11.
  </ribbon> 
12.
</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:

01.
using System; 
02.
using System.Collections.Generic; 
03.
using System.IO; 
04.
using System.Linq; 
05.
using System.Reflection; 
06.
using System.Runtime.InteropServices; 
07.
using System.Text; 
08.
using Office = Microsoft.Office.Core; 
09.
 
10.
namespace ExcelAddIn1 
11.
12.
    [ComVisible(true)] 
13.
    public class Ribbon1 : Office.IRibbonExtensibility 
14.
15.
        ... 
16.
 
17.
        #region Menübandrückrufe 
18.
 
19.
        public void MyButton_Click(Office.IRibbonControl ctrl) 
20.
21.
            MachIrgendetwas m = new MachIrgendetwas(); 
22.
            m.ZahlenAuffüllen(); 
23.
24.
 
25.
        ... 
26.
 
27.
        #endregion 
28.
 
29.
        ...  
30.
31.
32.
 
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ß
Bitte warten ..
Mitglied: KaiserQQ7
04.07.2011 um 09:46 Uhr
Hallo opalka,

vielen Dank Meister

Grüße
Kaiser
Bitte warten ..
Ähnliche Inhalte
Windows Server
C sharp oder Powershell oder VB?
Frage von 1410640014Windows Server4 Kommentare

Hallo, ich würde gerne ein paar Dinge automatisieren. Geeignet und bekannt sind mir alle 3 Sprachen - C#, PS ...

Visual Studio

NET C-Sharp: 2x Dataadapter mit unterschiedlichem Select

gelöst Frage von 14116Visual Studio2 Kommentare

Hallo, im Unten angeführetem C# Code, verwende ich eine Form mit zwei DataGridViews an einer AccessDatenbank, angebunden via ODBC. ...

IDE & Editoren

IDE für C-Sharp und C++ auf Windows

gelöst Frage von BugdroidIDE & Editoren8 Kommentare

Hallo, Ich nutze derzeit Visual Studio, aber auf Dauer ist es mir etwas zu Ressourcenfressend und für meine Zwecke ...

C und C++

C Sharp XAML Universal

Frage von DippsC und C++3 Kommentare

Hallo ich versuche gerade mit C#2015 ein Projekt Universal XAML zu erstellen um auf einem Raberry PI 2 mit ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)5 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...