Microsoft Excel

Herbers Excel/VBA-Archiv

XLA-Menü-Fehler

Betrifft: XLA-Menü-Fehler von: HaWe
Geschrieben am: 17.04.2014 16:32:04

Liebe VBA-/Excel-Profis,

habe mal wieder ein Problem mit XLA-Dateien (alles Add-ins, die ca. 2004-2006 entwickelt wurden), die alle schon einmal unter Exxcel 2010 gelaufen sind:
Das Problem besteht mit dem Befehl zum Löschen einer Menüleiste - dieses Problem ist in allen Add-Ins vorhanden, der Befehl menu.Controls("&FaceIdViewer").Delete im folgenden Code verursacht den Fehler "Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ...."

Es ist auch in anderen Add-Ins so, dass der Versuch, eine Menüleiste zu löschen (egal unter welchem Namen), immer diesen Fehler produziert. Der Fehler tritt schon beim ersten Start auf, wenn die Menüleiste noch gar nicht existiert.
Andere Benutzer-Menüs sind schon vorhanden.
Die jetzt fehlerhaft laufenden Add-Ins haben alle schon einmal funktioniert.

Sub delete_from_menu()

Dim menu As CommandBarPopup
Dim cbarbutton As CommandBarButton

On Error Resume Next
Set menu = CommandBars("Worksheet Menu Bar").FindControl(Type:=msoControlPopup, ID:=30007) ' _
find Tools menu
menu.Controls("&FaceIdViewer").Delete
Set menu = CommandBars("Worksheet Menu Bar").Controls(1) 'in case no Tools menu delete from  _
first menu
menu.Controls("&FaceIdViewer").Delete
On Error GoTo 0

End Sub

Habt Ihr einen Tip, wo ich "schrauben" muss, damit das wieder geht?

Danke und Gruß

Hans-Werner

  

Betrifft: AW: XLA-Menü-Fehler von: mumpel
Geschrieben am: 17.04.2014 17:24:46

Hallo!

Es gibt keine Symbolleisten mehr seit Office 2007, als auch keine "Worksheet Menu Bar". Daher kannst Du aus dem Menüband nichts herauslöschen. RibbonX-Workshop, da kannst Du nachlesen wie man das Menüband beeinflussen und anpassen kann.

Gruß, René


  

Betrifft: AW: XLA-Menü-Fehler von: HaWe
Geschrieben am: 17.04.2014 22:07:57

Hallo René,

danke für den Hinweis.

Mein Gegenhinweis, der mich sehr wundert: Unter Windows 7 (32-bit) und Excel 2010 (32-bit) funktionieren diese AddIns einwandfrei. Probleme gibt es unter Windows 7 (64bit) mit Excel 2010 (64bit). Woher kommt das? Gibt es Befehle/Parameter, die unter 64bit zu ergänzen/ändern wären? - Vergleichsweise "SafePtr" bei den Declare-Anweisungen, die ja unter 64-bit auch nicht ohne die Ergänzung "SafePtr" laufen?

Gruß
Hans-Werner


  

Betrifft: AW: XLA-Menü-Fehler von: mumpel
Geschrieben am: 17.04.2014 23:32:19

Bei 64-bit ist das eigentlich normal. Die 64-bit-Version ist überflüssig wie ein Kropf, sogar Microsoft selber rät zur 32-bit-Version von Office (auch unter Windows 64-bit). Ich kann unter 64-Bit-Office nicht testen, da ich es nicht habe (und nie haben werde).

Mal davon abgesehen, weshalb schipperst Du noch immer mit einem alten Kahn (den alten Symbolleisten-Add-Ins) auf dem Office-See umher? ;) Auf RibbonX umstellen sollte alle Probleme lösen.


  

Betrifft: AW: XLA-Menü-Fehler von: Martin
Geschrieben am: 18.04.2014 08:36:00

Hallo Hans-Werner,

so ganz korrekt ist die Auskunft von mumpel nicht. Es ist zwar richtig, dass die "Worksheet Menu Bar" durch RibbonX abgelöst wurde. Trotzdem wird die "Worksheet Menu Bar" aus Kompatibilitätsgründen weiterhin unterstützt. Jedoch stimmt mumpels Aussage, dass sogar Microsoft bei Excel von der 64Bit-Version abrät und die 32Bit-Version empfiehlt. Auch wenn du ein 64Bit-Betriebssystem verwendest, wird darunter 32Bit-Software unterstützt. Du kannst also Excel in der 32Bit-Version unter Windows 7 in der 64Bit-Version installieren. Vielleicht löst das ja schon dein Problem.

Trotzdem will ich wenigstens mal einen Versuch starten das Makro umzuschreiben. Wenn ich den Inhalt richtig nachvollziehe, soll im Menü "Extras" der Eintrag "FaceIdViewer" entfernt werden. Ich bin kein Freund von "On Error Resume Next"-Anweisungen, daher prüfe ich lieber das Vorhandensein des Eintrags. Ich hoffe, dass folgendes ungetestetes Makro funktioniert:

Sub delete_from_menu()
   
    Dim menu As CommandBarPopup, ctrCmb As CommandBarControl
    Dim cbarbutton As CommandBarButton
    
    Set menu = CommandBars("Worksheet Menu Bar").FindControl(Type:=msoControlPopup, ID:=30007)
    
    If Not menu Is Nothing Then
        For Each ctrCmb In menu
            If ctrCmb.Caption = "&FaceIdViewer" Then ctrCmb.Delete
        Next
    End If
       
End Sub
Viele Grüße

Martin


  

Betrifft: AW: XLA-Menü-Fehler von: Martin
Geschrieben am: 18.04.2014 08:56:45

Hallo Hans-Werner,

ich habe gerade festgestellt, dass dein gepostetes Makro etwas widersprüchlich ist. Der Eintrag "FaceIdViewer" soll sowohl im Menü "Extras" also auch im Menü "Datei" gelöscht werden. Das verwundert mich etwas, deshalb lasse jetzt einfach alle Menüs nach dem Eintrag "FaceIdViewer" durchsuchen:

Sub delete_from_menu()
   
    Dim menu As CommandBarPopup, ctrCmb As CommandBarControl
    Dim cbarbutton As CommandBarButton
        
    For Each menu In CommandBars("Worksheet Menu Bar").Controls
        For Each ctrCmb In menu.Controls
            If ctrCmb.Caption = "&FaceIdViewer" Then ctrCmb.Delete
        Next
    Next
       
End Sub
Viele Grüße

Martin


  

Betrifft: AW: XLA-Menü-Fehler von: mumpel
Geschrieben am: 18.04.2014 10:08:22

Das Problem ist das es das Menü "Datei" in Office 2010 nicht gibt. Das Menüband kann nämlich nicht per VBA beeinflusst werden. Entfernen kann man doch nur etwas wenn man es vorher dort rein gebracht hat.


  

Betrifft: AW: XLA-Menü-Fehler von: Martin Springer
Geschrieben am: 18.04.2014 12:25:19

Hallo Mumpel,

jetzt schäme ich mich aber wirklich, was für ein blöder Denkfehler von mir. Da ich selbst noch hauptsächlich mit Excel 2003 arbeite, habe ich daran einfach nicht gedacht. Im AddIn-Reiter werden selbstverständlich nur per VBA angelegte Menüs angezeigt. Zumindest dürfte mein Makro keinen Fehler verursachen, weil das "Excel-Menü" zwar nicht angezeigt wird, aber dennoch vorhanden ist. Mit meinem Makro sollte also eine Abwärtskompatibilität zu älteren Excel-Versionen gewährleistet sein.

Viele Grüße

Martin


  

Betrifft: AW: XLA-Menü-Fehler von: mumpel
Geschrieben am: 23.04.2014 21:39:49

Zur Info:
Im Backstage-View können auch Menüs aus Office 2007 erscheinen, in einem eigenen Control "Add-Ins", da das Office-Menü aus Office 2007 in Office 2010-2013 durch das Backstage-View abgelöst wurde und die Office-Menu-Ebene somit nicht mehr so funktioniert wie noch unter Office 2007.