Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ribbons

Ribbons
29.07.2014 10:42:00
Born
Hallo Forum,
ich muss in einem Projekt von 2003 auf 2010 wechseln und somit auch die bisherigen Symbolleisten durch Ribbons ersetzen. Ziel ist ein Ribbon mit 6 Buttons, die jeweils eine Prozedur aufrufen sollen
Das ganze Projekt setzt auf ExcelDNA und Netoffice auf, mit denen eine XLL erzeugt wird. Die XLL enthält die XML-Daten für die 6 Buttons sowie auch die zugehörigen 6 Prozeduren.
Ich habe das Ganze soweit, dass das Ribbon angezeigt wird, weiss aber nicht, wie die Aufrufe der Prozeduren erfolgen sollen. Laut Google soll dazu ein OnAction implementiert werden, aber es passiert nichts.
Kann mir jemand einen Tipp geben, wie ich die Aufrufe implementieren muss?
Vielen Dank,
M. Born

33
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbons
29.07.2014 10:50:54
Hajo_Zi
Hallo Born,
der Umstieg ist kein Grund für neue Symbolleisten, Die vor 2007 werden unter Add Ins angezeigt.

AW: Ribbons
29.07.2014 10:57:45
Born
Hallo Hajo,
leider wird gewünscht, dass die Buttons in einer separaten Leiste angezeigt werden und nicht in der Addins-Leiste. Ich werde da leider nicht drumherum kommen...
Viele Grüße,
M. Born

AW: Ribbons
29.07.2014 11:25:58
Born
Hallo Hajo,
ich arbeite mich gerade durch Deine Beschreibung. Leider komme ich da etwas durcheinander, da ich zusätzlich noch die ExcelDNA- und Netoffice-Klassen benutzen muss und nicht so recht weiss, welche an welcher Stelle benötigt wird und wie die sich gegenseitig aufrufen. Für einen VBA-Coder ist das ganze .NET ziemlich verwirrend...
Danke für Deine Hilfe bisher,
M. Born

AW: Ribbons
29.07.2014 12:29:03
mumpel
Hallo!
RibbonX-Workshop. Für Ribbon-Programmierung in .Net musst Du bei Microsoft schauen (Englischkenntnisse erforderlich), kann aber im VBA-Editor nicht verwendet werden. Bei .Net kann ich nicht helfen.
Gruß, René

Anzeige
AW: Ribbons
29.07.2014 12:33:42
Born
Hallo René,
danke für Deinen Link. Ich werde mir auch diesen anschauen und hoffe, was passende zu finden.
Viele Grüße,
M. Born

AW: Ribbons
29.07.2014 13:22:04
Nepumuk
Hallo,
in der XML:
onAction="OnAction"
im Addin:
Public Sub OnAction(ByVal control As Office.IRibbonControl)
End Sub

Gruß
Nepumuk

AW: Ribbons
29.07.2014 13:42:00
Born
Hallo Nepomuk,
leider funktioniert es bei mir nicht. Ich habe in die OnAction-Routine einfach ein Msgbox gesetzt, aber es passiert nichts. Kennst Du Dich mit .NET aus?
Viele Grüße,
M. Born

Anzeige
AW: Ribbons
29.07.2014 13:50:42
Nepumuk
Hallo,
ja schon. Aber ich hab noch nie mit VSTO oder ähnlichem gearbeitet. Die OnAction-Zeile habe ich hier:
https://netoffice.codeplex.com/discussions/433445
gefunden.
Gruß
Nepumuk

AW: Ribbons
29.07.2014 13:57:03
Born
Hier mein bisheriger Code (gekürzt):
Imports System
Imports ExcelDna.Integration
Imports Microsoft.VisualBasic.ApplicationServices
Imports NetOffice
Imports Excel = NetOffice.ExcelApi
Imports ExcelDna.Integration.CustomUI
Friend Class StartUp
Implements IExcelAddIn
Public Dim objRibbon As ExcelDna.Integration.CustomUI.IRibbonUI
Dim appxl As Excel.Application

Private Sub  Start() Implements IExcelAddIn.AutoOpen
appxl = New Excel.Application(Nothing, ExcelDnaUtil.Application)
End Sub

Public Sub onAction(ByVal control As ExcelDna.Integration.CustomUI.IRibbonControl)
MsgBox("Button1")
End Sub

Anzeige
AW: Ribbons
29.07.2014 14:13:35
yummi
Hallo,
ich hab zwar keine Erfahrung mit NET und habe bisher den CustomUIEditor benutzt. Doch ein Tip habe ich trotzdem für dich da ich das Fehlerbild kenne:
Überprüfe mal bitte Schreibweise deiner Funktion, im XML File und im Module selber, wenn das nicht passt kann deine MsgBox nicht erscheinen.
Gruß
yummi

AW: Ribbons
29.07.2014 14:17:45
Born
In beiden Dateien ist die Schreibweise identisch: onAction
Daran liegt es nicht. Ich vermute, dass das Zusammenspiel von ExcelDNA und Netoffice nicht richtig funktioniert. Aber leider habe ich kein Tutorial gefunden, bei denen beide zusammen mit Ribbons verwendet wurden.

Anzeige
AW: Ribbons
29.07.2014 15:56:41
yummi
Hallo,
meine Dateien, für die ribbons fangen so an:

""
""

nur ohne die "" um die
im Module muss dann die Funktion onload zu finden sein

Public Sub onload(pobjRibbon As IRibbonUI)
Ich hoffe es hilft
Gruß
yummi

AW: Ribbons
29.07.2014 16:00:02
Born
Hier die Zeile aus meiner XML (ohne die ):
customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onload"
Da ich Office2010 einsetze, ist das Schema etwas anders als bei Dir.
Viele Grüße,
M. Born

Anzeige
AW: Ribbons
29.07.2014 17:15:12
mumpel
Du kannst aber auch "2006/01" nehmen, sofern Du nur das Menüband anpassen willst. Erst wenn Du auch das Officemenü bzw. Backstage-View anpassen möchtest musst Du "2009/07" nehmen, bzw. beides (zwei Anpassungsdateien) in einer Datei wenn Du in beiden Officeversionen das Menü anpassen möchtest.

AW: Ribbons
29.07.2014 17:19:18
Born
Ich habe es mal mit dem 2007er Schema probiert. Hat jedoch keinerlei Auswirkungen. Mein Code funktioniert weiterhin nicht... :-(

AW: Ribbons
29.07.2014 18:26:20
Nepumuk
Hallo,
ich würd halt mal nach entsprechenden Foren suchen, wir VBAler können dir da nicht weiterhelfen.
Gruß
Nepumuk

Anzeige
AW: Ribbons
30.07.2014 08:07:17
Born
Trotzdem Danke an alle, die es versucht haben. Manchmal hilft ja auch schon eine kleine Anregung weiter, weil man etwas völlig übersehen hat, und man kommt dann selbst auf die Lösung...

AW: Ribbons
30.07.2014 09:08:05
yummi
Hallo Born,
poste doch mal dein gesamten Quellcode der xml Datei. Vlt seh ich ja was ;-)
Gruß
yummi

AW: Ribbons
30.07.2014 09:38:15
Born
Hi Yummi,
hier der XML-Code (die habe ich jeweils gelöscht):
DnaLibrary Language="VB" RuntimeVersion="v2.0"
ExternalLibrary Path="FKGenDNA.dll" Pack="true" /
Reference Path="WordAPI.dll" Pack="true" /
Reference Path="NetOffice.dll" Pack="true" /
Reference Path="ExcelApi.dll" Pack="true"/
Reference Path="OfficeApi.dll" Pack="true"/
Reference Path="VBIDEApi.dll" Pack="true"/
CustomUI
customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="onload"
ribbon startFromScratch="false"
tabs
tab id="tab01" label="DOK"
group id="grp01" label="DOK-Makros"
button id="tgb01" label="KK-Generator" imageMso="TableSharePointListsModifyColumnsAndSettings" onAction = "Button_onAction" size="normal"/
button id="tgb02" label="Zellschutzprüfung_An" imageMso="DataValidationCircleInvalid" onAction = "Button_onAction" size="normal"/
button id="tgb03" label="Zellschutzprüfung_Aus" imageMso="DataValidationClearValidationCircles" onAction = "Button_onAction" size="normal"/
button id="tgb04" label="Alle_Blätter_schützen" imageMso="GroupChangesExcel" onAction = "Button_onAction" size="normal"/
button id="tgb05" label="Blattschutz_entfernen" imageMso="GroupChangesExcel" onAction = "Button_onAction" size="normal"/
button id="tgb06" label="Kopf/Fußzeilen anpassen" imageMso="HeaderFooterLinkToPrevious" onAction = "Button_onAction" size="normal"/
/group
/tab
/tabs
/ribbon
/customUI
/CustomUI
/DnaLibrary

Anzeige
AW: Ribbons
30.07.2014 10:04:57
yummi
Hallo Borg,
kannst du bitte mal diese Datei hochladen, dann brauch ich nicht alles abzutippern und zu ergänzen
Gruß
yummi

AW: Ribbons
30.07.2014 10:50:01
yummi
Hallo Borg,
wenn Du den Teil mit der DNA libary rausnimmst funktioniert alles. Der Fehler ist also da zu suchen.
da kenn ich mich allerdings nicht aus.
Aber vlt hilft dir das weiter:

https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0CFwQFjAH&url=http%3A%2F%2Fwww.sysmod.com%2FPractice%2520project%2520converting%2520XLAM%2520to%2520ExcelDna.docx&ei=2LDYU5jqL6qv7AaU-ID4Cw&usg=AFQjCNFhaA7RV_jFPE47e8EjEVGYTR_49A
gruß
yummi

Anzeige
AW: Ribbons
30.07.2014 11:10:42
Born
Danke für den Link. ExcelDNA kann ich leider nicht rausnehmen, da dies den Wrapper zwischen .NET und Excel darstellt. Aber ich habe in der Zwischenzeit noch einen Bug im VB-Code gefunden, so dass ich zumindest eine Reaktion erhalte, wenn ich einen Button im Ribbon klicke. Problematisch ist nur, dass ich noch Variablen zwischen beiden Umgebungen austauschen muss, die ich bisher über globale Systemvariablen gelöst habe. Da muss ich mir jetzt auch noch eine andere Lösung aussuchen, damit alles funktioniert.

AW: Ribbons
30.07.2014 11:30:51
mumpel
Das kommt davon wenn man krampfhaft an alten Dingen festhalten will. ;-)

AW: Ribbons
30.07.2014 11:36:08
Born
Genau das mache ich ja nicht ;-)
Ich habe ein altes VBA-Projekt nach .NET portiert. Und ExcelDNA ist lediglich die Zwischenschicht, damit Excel und die XLL miteinander kommunizieren können. Dadurch habe ich etliche Vorteile, z.B. dass das Tool in allen Excel-Versionen ab Excel 95 bis hin zu 2013 lauffähig ist, ohne dass ich am Code etwas ändern muss.

AW: Ribbons
30.07.2014 11:40:08
mumpel
Weshalb machst Du es Dir so schwer? Wäre eine dll, auf die Du per "Declare Function" zugreifen kannst, nicht einfacher?

AW: Ribbons
30.07.2014 12:49:13
Born
Eine XLL ist genauso eine DLL. "Normale" DLLs, die man per .NET selbst erzeugt, funktionieren nicht in Excel.

AW: Ribbons
30.07.2014 14:00:33
mumpel
Dann darfst Du eben keine "normale dll" erstellen. Du solltest eine dll erstellen auf die man programmatisch Zugriff hat ohne die dll im System registrieren zu müssen, also eine dll ohne Einstiegs- und Ausstiegspunkt, wenn es sein muss eben mit einer anderen/zusätzlichen Entwicklungsumgebung. Wenn Du auf "Excel-DNA" bestehst musst Du weiter in diese Materie eintauchen, was aber erfahrungsgemäß nicht von heute auf morgen zu erlernen ist, schon garnicht ohne Englischkenntnisse.

AW: Ribbons
30.07.2014 14:47:34
Born
Ich habe mich lange im Netz schlau gemacht. Eine selbsterstellte DLL aus Excel heraus zu nutzen, geht nur wenn sie ein COM-Addin beinhaltet, was bei Excel automatisch zu einer XLL führt. ExcelDNA bietet eine einfache Möglichkeit, auf die Funktionen der XLL zuzugreifen (so wie VSTO, nur einfacher und besser gelöst). Klar lernt man .NET nicht von heute auf morgen, aber es wird von Tag zu Tag besser. Mein Englisch ist mehr als ausreichend, um die Hilfetexte zu verstehen. Habe mehr als genug Meetings in Englisch ;-)

AW: Ribbons
30.07.2014 17:58:50
Nepumuk
Hallo,
das stimmt definitiv nicht. Ich habe genügend DLL's geschrieben die im Excel völlig problemlos funktionieren. Du musst das nur als ActiveX-DLL deklarieren, schon kann Excel mit dieser kommunizieren. Dass das Interface eine Klasse sein muss ist kein Problem, der Rest kann in ganz normalen VB geschrieben sein.
Gruß
Nepumuk

AW: Ribbons
31.07.2014 08:23:13
Born
Hallo Nepomuk,
ich bin da zwar nicht der Experte, aber ActiveX-DLLs sind (wenn ich mich recht entsinne) wieder etwas anderes als "normale" DLLs. Bei denen habe ich jedoch immer das Problem mit dem Deployment, d.h. Installation, Signierung, Registrierung etc. In meinem jetzigen Konstrukt muss ich nur die XLL neu kompilieren und kann sie ohne weiteres nutzen.
Viele Grüße,
M. Born

AW: Ribbons
31.07.2014 10:01:00
mumpel
Ich persönlich unterstütze ältere Versionen erst garnicht mehr. Dann muss ich mich nurnoch auf das Menüband konzentrieren. Office 95-2003 haben ohnehin keinen Support von Microsoft mehr. M.E. ist es unsinnig jetzt noch für Office 95 zu programmieren.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige