Laden...

VSTO-Excel mit C# und Ribbon unter Add-Ins Zellen auslesen

Erstellt von Fireman vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.355 Views
F
Fireman Themenstarter:in
1 Beiträge seit 2018
vor 5 Jahren
VSTO-Excel mit C# und Ribbon unter Add-Ins Zellen auslesen

Hallo
Ich bin Anfänger in C# und VSTO Excel – Programmierung.
Ich möchte mit einem Ribbon-Butten unter Add-Ins in Zellen schreiben und auslesen.
Mit dem Code, den ich bis jetzt habe wird mir nach Druck auf den Button eine neue Arbeitsmappe geöffnet und in die Zelle geschrieben:
(den Code hab ich zum Teil abgeschrieben)

Excel.Application anwendung = new Excel.Application();
anwendung.Visible = true;
Excel.Workbook arbeitsmappe = anwendung.Workbooks.Add();
Excel.Worksheet arbeitsblatt = arbeitsmappe.Worksheets["Tabelle1"];

Anschließend kann ich in Zellen schreiben:

Excel.Range Zelle = arbeitsblatt.Range["A1"];
Zelle.Value2 = "Hallo";

Ich möchte aber nicht, dass sich eine neue Arbeitsmappe öffnet.

Excel.Workbook arbeitsmappe = anwendung.Workbooks.Add();

Ist demnach falsch. Ich habe schon andere Möglichkeiten anstelle von „Add()“ probiert;
z.B.:

Excel.Workbook arbeitsmappe = anwendung.ActiveWorkbook;

Funktioniert aber nicht.

Gruß
Fireman

16.833 Beiträge seit 2008
vor 5 Jahren

Und was heisst "funktioniert nicht" ?
[Hinweis] Wie poste ich richtig? Punkt 5

Ich sehe in Deinem Code nichts bezüglich eines Ribbons.

Zudem ist das Thema Ribbon in Office obsolete.
Extensions in Zukunft erfolgen in der Office Suite durch JavaScript.
JavaScript API for Office
Du reitest da ein etwas altes Pferd.. VSTO und Addins sind quasi "deprecated"; sie heissen jetzt auch "Apps for Office".

4.939 Beiträge seit 2008
vor 5 Jahren

Hallo und willkommen,

was heißt "funktioniert nicht"? Mit


Excel.Workbook arbeitsmappe = anwendung.ActiveWorkbook;

solltest du auf die aktive Arbeitsmappe zugreifen können. Oder kriegst du null als Rückgabewert? Dann ist evtl. ein anderes Fenster innerhalb von Excel aktiv, s.a. Application.ActiveWorkbook.

Du kannst auch mittels Index auf die einzelnen Mappen zugreifen, also z.B.


Excel.Workbook arbeitsmappe = anwendung.Workbooks[0];

Aber du mußt natürlich eine Arbeitsmappe geladen haben.