Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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

Excel 2013 Kontextmenü generell ändern

Excel 2013 Kontextmenü generell ändern
20.09.2016 13:13:07
Lutz
Hallo Excel-Profis,
leider benötige ich mal wieder Hilfe bei einem Problem - Recherché hat mich auch nicht wirklich weiter gebracht:(
Ich nutze ein AddIN bei dem ich mir diverse Makros in das Kontextmenü lege. Geht bis Excel 2010 auch underbar aber jetzt haben wir auf Excel 2013 gewechselt und die Einträge im Kontextmenü sind alle weg.
Hier mal der wesentliche Code:
Sub Kontextmenue()
Dim TmpDir
TmpDir = CurDir
ChDir "C:\"
Application.ScreenUpdating = False
Workbooks.Open Filename:="C:\Vorgaben.xls"
Dim oPopUp As CommandBarControl
Dim oBtn As CommandBarButton
Set oPopUp = Application.CommandBars("Cell"). _
Controls.Add(msoControlPopup, before:=1)
oPopUp.Caption = "User Directories"
Set oBtn = oPopUp.Controls.Add
With oBtn
.Caption = "Test" (Code der die Vorgabendatei nutzt)
.OnAction = "Makro1"
.FaceId = 3
End With
Diverse weitere Einträge
Workbooks("Vorgaben.xls").Close Savechanges:=False
Application.ScreenUpdating = True
ChDrive Left(TmpDir, 1)
ChDir TmpDir
End Sub
Erst dachte ich, der Code wird vollkommen ignoriert, aber beim Testen habe ich bemerkt, dass die Einträge schon alle erzeugt werden - aber nur in der Datei Vorgaben.xls
Jetzt sollen die Einträge aber bei jeder Datei vorhanden sein die geöffnet ist oder noch geöffnet wird.
Geht das unter Excel 2013/2016 und wenn ja was muß ich ändern damit die Einträge nicht nur in der geöffneten Datei erzeugt werden sondern immer?
Weiß jemand Rat?
Vielen Dank und viele Grüße
Lutz

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel 2013 Kontextmenü generell ändern
20.09.2016 16:33:09
Hajo_Zi
Hallo Lutz,
Du hast den Code schon in einem Add In und bei open ausgeführt?

AW: Excel 2013 Kontextmenü generell ändern
20.09.2016 17:31:43
Lutz
Hallo Hajo,
vielen Dank, ja das habe ich.
Ich habe mal eine andere Datei erstellt und es versucht - da geht es.
Siehe hier:https://www.herber.de/bbs/user/108299.xls
Da geht es mit Auto_Open und es bleibt auch stehen.
Nur mein Makro das vorher eine Datei lädt und die Caption.Names aus diesem File zieht (z.B. auch den hinerlegten Shortcut), das geht nicht.
Es liegt auch nicht an der Menge (sind über 100 Einträge) - es geht schon bei einem einzigen nicht.
Ich sehe auch keinen Unterschied, ausser das eben die Datei vorab geladen wird und das ich nicht Temporary:=True) am ende stehen habe (habe ich schon versucht, auch kein Unterschied).
Hast Du eine Idee woran das liegen kann?
Vielen Dank und viele Grüße Lutz
Anzeige
AW: Excel 2013 Kontextmenü generell ändern
20.09.2016 17:38:14
mumpel
Hallo!
Hast Du es schon mal mit RibbonX versucht? Hierbei wird das Kontextmenü per RibbonX aufgebaut. Das Add-In muss als xlam gespeichert werden. RibbonX-Workshop - Das Kontextmenü
Gruß, René
AW: Excel 2013 Kontextmenü generell ändern
20.09.2016 17:49:27
Lutz
Hallo Rene,
habe ich nicht - erstens sind das bei rund 150 Einträgen (beliebte Dateien, Verzeichnisse....) ja endlose Mengen an Code und zweitens muß ich gestehen, dass sich mir das nicht erschliesst.
Dafür habe ich jetzt ausgetestet, dass der Testeintrag erzeugt wird sobald ich die Excel-Datei mit den Vorgaben nicht mehr lade:
Das hier raus:
Dim TmpDir
TmpDir = CurDir
ChDir "C:\"
Application.ScreenUpdating = False
Workbooks.Open Filename:="C:\Vorgaben.xls"
Und am ende das schliessen der Datei auch.
Also das beides raus und es geht:)
Aber wie bekomme ich sonst meine Vorgaben da rein? Hat jemand eine Idee? Vielleicht kann man auch ohne öffnen der Datei die Vorgaben da rauslesen?
Vielen Dank und viele Grüße Lutz
Anzeige
Speichere eine Addin als xltm
20.09.2016 17:49:56
snb
etwas einfacher:
Private Sub Workbook_Open()
With Application.CommandBars("Cell").Controls
With .Add(msoControlButton, before:=1, Temporary:=True)
.Caption = "Markierung"
.OnAction = "Markierung"
.FaceId = 343
End With
With .Add(msoControlPopup, before:=1, Temporary:=True)
.Caption = "User-Info's"
.BeginGroup = True
With .Controls.Add
.Caption = "User-Name"
.OnAction = "User_Name"
.FaceId = 1045
End With
With .Controls.Add
.Caption = "User-Verzeichnis"
.OnAction = "User_Verzeichnis"
.FaceId = 1046
End With
End With
End With
End Sub
Sub M_reset()
On Error Resume Next
With Application.CommandBars("Cell")
For j = 1 To 4
.Controls(Choose(j, "Markierung", "User-Info's", "User Directories")).Delete
Next
End With
End Sub
Speichere die Datei als xltm.
Anzeige
AW: Speichere eine Addin als xltm
21.09.2016 08:57:05
Lutz
Hallo snb,
vielen Dank für den schnelleren/Kürzeren Code.
Mein Problem ist jetzt "nur" noch, wie ich meine Vorgabewerte in die Bezeichnungen bekomme ohne, dass ich meine Vorgabe-Datei öffnen muss.
Weiß da jemand Rat?
Kann man die Werte auch in das AddIn kopieren und von da aus abgreifen? Oder kann man die Werte abgreifen ohne die Vorgabedatei zu öffnen?
Vielen Dank und viele Grüße Lutz
AW: Speichere eine Addin als xltm
21.09.2016 13:28:13
Lutz
Hallo SNB,
vielen Dank für den Code - das Funktioniert!
Leider become ich ja meine Vorgaben aus einer anderen Datei so auch nicht in das AddIN?!
Ich habe mir jetzt das hier zusammengegooglet : (hole mir die Vorgaben direct in das AddIn dann muß ich keine Datei mehr öffnen und kann die variable direct aus der AddIn-Datei bestücken)
rivate

Function GetValue(pfad, datei, blatt, zelle)
'** Daten aus geschlossener Arbeitsmappe auslesen
'*** Dimensionierung der Variablen
Dim arg As String
'Sicherstellen, dass das datei vorhanden ist
If Right(pfad, 1)  "\" Then pfad = pfad & "\"
If Dir(pfad & datei) = "" Then
GetValue = "datei Not Found"
Exit Function
End If
'** Das Argument erstellen
arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, ,  _
xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Sub Bereich_auslesenLJ2()
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object
'** Angaben zur auszulesenden Zelle
pfad = "C:\Vorgabe"
datei = "vorgaben.xls"
blatt = "Tabelle1"
Set bereich = Range("A1:F50")
'** Bereich auslesen
For Each zelle In bereich
'** Zellen umwandeln
zelle = zelle.Address(False, False)
'** Eintragen in Bereich
'ActiveSheet.Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Sheets("Tabelle1").Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle) _
Next zelle
End Sub

Sub Bereich_auslesenLJ1()
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object
'** Angaben zur auszulesenden Zelle
pfad = "C:\Vorgabe"
datei = "vorgaben.xls"
blatt = "Tabelle2"
Set bereich = Range("A1:F50")
'** Bereich auslesen
For Each zelle In bereich
'** Zellen umwandeln
zelle = zelle.Address(False, False)
'** Eintragen in Bereich
'ActiveSheet.Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Sheets("Tabelle2").Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle) _
Next zelle
End Sub

Mein einziges Problem:
'ActiveSheet.Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Sheets("Tabelle2").Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Er schreibt mir immer alles in beide Tabellen (Tabelle1 und Tabelle2) obwohl ich beim 2ten Makro ja nur etwas in Tabelle2 schreiben möchte, schreibt er tratzdem in Tabelle1 auch die Daten rein. Eine Idee was man da ändern muß?
Vielen Dank und viele Grüße
Lutz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige