| 

.NET C# Java Javascript Exception

2
Hallo,

ich schreibe gerade ein Excel 2010 AddIn in VS 2010 mit C#.
Ich suche eine gute Lösung, um auf ausscheiden, kopieren und einfügen reagieren zu können.
Ein Ereignis wäre optimal, die gibt es aber glaub ich nicht!?

Wer kennt eine gute Lösung?

Freu mich schon auf alle Lösungsvorschläge.

mfg vbmab
15.05.2011
Gast
21 1 2
7 Antworten
0
Die Buttons kannst du über die Control.Id abfragen.

Public Sub OnAction(ByVal control As office12.IRibbonControl, ByRef cancel As Boolean)

If control.Id = "Copy" Then 'Copy | Paste | Cut
' ...
'Bei Bedarf das eigentlich durch den Button ausgelöste Ereignis abbrechen
cancel = True
end if

end sub
16.05.2011
schlumpfger 288 1 8
Es scheint genau das zu sein, was ich brauche.

Ich komme noch nicht ganz weiter.
Wo hänge ich den den Handler "OnAction" an?

Mir wäre es liebsten, wenn ich es an ein Worksheet-Ereignis anhängen könnte.
– Gast 16.05.2011
0
Man weiss nur ob der Knopf gedrückt worden ist. Welches Worksheet gerade offen ist (aktiv) kannst du das Excelobjekt fragen.

Imports office12 = Microsoft.Office.Core ' - benötigt Office 12 Library

Implements office12.IRibbonExtensibility ' - benötigt Office 12 Library

Public Function GetCustomUI(ByVal RibbonID As String) As String Implements office12.IRibbonExtensibility.GetCustomUI

If ExcelapplicationObject IsNot Nothing Then
Return BuiltExcel12GUI()
End If

Return Nothing

End Function


Public Function BuiltExcel12GUI() As String
BuiltWord12GUI = _
"<customUI xmlns=""http://schemas.microsoft.com/office/2006/01/customui"" > " & _
"<commands> " & _
"<command idMso=""Copy"" onAction=""OnAction"" />" & _
"<command idMso=""Paste"" onAction=""OnAction"" />" & _
"<command idMso=""Cut"" onAction=""OnAction"" />" & _
"</commands>" & _
"</customUI>"
End Function
17.05.2011
schlumpfger 288 1 8
0
Ich habe es mal mit C# wie folgt umgesetzt:

using Microsoft.Office.Core;

namespace ...
{
public partial class MyRibbon : IRibbonExtensibility
{
public string GetCustomUI(string ribbonId)
{
string text = "";
text += "<customUI xmlns=\"http://schemas.microsoft.com/office/2006/01/customui>\">";
text += "<commands>";
text += "<command idMso=\"Copy\" onAction=\"OnAction\" />";
text += "<command idMso=\"Paste\" onAction=\"OnAction\" />";
text += "<command idMso=\"Cut\" onAction=\"OnAction\" />";
text += "</commands>";
text += "</customUI>";
return text;
}

public void OnAction(IRibbonControl ribbonControl, bool cancel)
{
// Do something ...
}
}
}

Die Methode "GetCustomUI" wird nicht aufgerufen.
Muss ich noch was beachten?

Gibt es auch eine Möglichkeit, um das Ausschneiden, Kopieren und Einfügen die man über Tastenkürzel machen kann, mit zu bekommen.
17.05.2011
vbmab 53 1 5
Aber dein AddIn wird schon in Excel geladen?
LoadBehaviour = 3 in der Registry unter CurrentUser\Software\Microsoft\Office\Excel\Addins\NamedeinesAddins.Connect -> LoadBehaviour

Zu den Tastenkürzeln kann ich nichts beitragen...
schlumpfger 17.05.2011
0
Ich seh gerade, du brauchst ausserdem:


Implements Extensibility.IDTExtensibility2

Siehe:

http://msdn.microsoft.com/en-us/library/aa433551(v=office.12).aspx
17.05.2011
schlumpfger 288 1 8
0
Bei mit ist Registry-Eintrag "LoadBehaviour" unter
=> CurrentUser\Software\Microsoft\Office\Excel\Addins\NamedeinesAddins -> LoadBehaviour
Bei mir gibt es kein Connect. Da steht LoadBehaviour auf 3.

Extensibility.IDTExtensibility2 habe ich schon ausprobiert. Hier wird auch keine Methode aufgerufen.

Zur Info: ich verwende VS 2010 .Net 4.0 und Office 2010
17.05.2011
vbmab 53 1 5
Ich auch ;-)...

Bei mir ist der Klassenname (Connect) hinter dem AddInNamen in der registry eingetragen.

<GuidAttribute("D12C5AC4-054B-1205-B1D1-E623132BD576"), ProgIdAttribute("Mein Addin.Connect")> _
Public Class Connect

....
schlumpfger 17.05.2011
0
Ich habs...

Ich verwende den Visuellen Designer zum Erstellen meines Ribbons.
Aus dem generiere ich mir das Menüband in XML und CS (z.B.: Ribbon.xml und Ribbon.cs).
In das Ribbon.xml füge ich dann die Commands hinzu.
Und in das Ribbon.cs den Handler "OnAction".

Jetzt muss ich es noch mit den Tastenkürzel hinkriegen.

Danke für deine Unterstützung...
17.05.2011
vbmab 53 1 5
vbmab 53 1 5

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH