{"id":147,"date":"2009-03-12T15:13:51","date_gmt":"2009-03-12T15:13:51","guid":{"rendered":""},"modified":"2018-05-02T07:54:56","modified_gmt":"2018-05-02T06:54:56","slug":"neuen-menuepunkt-befehle-mit-parametern-hinzufuegen","status":"publish","type":"post","link":"https:\/\/www.kastenmaier.de\/?p=147","title":{"rendered":"VBA &#8211; Word: Neuen Men&uuml;punkt + Befehle mit Parametern hinzuf&uuml;gen [Update 03.10.2015]"},"content":{"rendered":"<p><span style=\"font-size: large;\"><strong>Beschreibung<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">Wer viel mit Makros arbeitet m\u00f6chte diese meist auch gern in das Men\u00fc oder als Symbolleiste einbinden. Hier erkl\u00e4re ich, wie man bestehende Makros per VBA als Men\u00fcpunkt in ein vorgegebenes Men\u00fc bringt.<!--more--><\/p>\n<p style=\"text-align: justify;\">Die folgenden Makros demonstrieren eine Installations- und Deinstallationsroutine, die ein Men\u00fc hinzuf\u00fcgt und 3 Men\u00fcpunkte in diesem Men\u00fc erzeugt bzw. das Men\u00fc mit den Men\u00fcpunkten wieder entfernt. Zwei dieser Men\u00fcpunkte sind einfache Funktionen, die ohne Parameter aufgerufen werden, der dritte Men\u00fcpunkt setzt einen \u00fcbergebenen Parameter voraus. Befehle ohne Parameter lassen sich leicht realisieren, daher war mir besonders der 3. Men\u00fcpunkt wichtig.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>[Update 03.10.2015]:<\/strong>\u00a0<\/span>Das Makro hat schon ein paar Jahre auf dem Buckel und sollte zwar auch in Word 2007 und neuer funktionieren, dort empfiehlt es sich allerdings Men\u00fcb\u00e4nder (Ribbons) zu erstellen. Hierf\u00fcr kann RibbonX eingesetzt werden oder auch (wenn es noch komfortabler sein soll) das kostenpflichtige MS Visual Studio in der Professional Version (wird VSTO ben\u00f6tigt).<\/p>\n<p><span style=\"font-size: large;\"><strong>Sourcecode<\/strong><\/span><\/p>\n<pre class=\"brush: vb; gutter: true\">&#039; Ben\u00f6tigte Konstanten\r\nConst MEN\u00dcNAME = &quot;&amp;Test&quot;\r\nConst BEFEHL1 = &quot;&amp;1. Befehl&quot;\r\nConst BEFEHL2 = &quot;&amp;2. Befehl&quot;\r\nConst BEFEHL3 = &quot;&amp;3. Befehl&quot;\r\n\r\n&#039; Installation des neuen Men\u00fcpunktes und Einrichten von 3 Befehlen\r\nPublic Sub Install()\r\n    On Error GoTo NoDocumentOpen &#039;Bei Fehlern wird zur Sprungmarke NoDocumentOpen gesprungen und damit die Funktion beendet\r\n\r\n    Dim objMen\u00fcleiste As Object\r\n    Dim objMen\u00fc As Object\r\n    Dim objBefehl As Object\r\n\r\n    Call Uninstall(MEN\u00dcNAME) &#039; l\u00f6schen eines evtl. vorhandenen Men\u00fcs mit gleichem Namen\r\n\r\n    &#039; neues Men\u00fc hinzuf\u00fcgen\r\n    objMen\u00fcleiste = CommandBars.ActiveMenuBar\r\n    objMen\u00fc = objMen\u00fcleiste.Controls.Add(Type:=msoControlPopup)\r\n    objMen\u00fc.Caption = MEN\u00dcNAME\r\n\r\n    &#039; neuen Men\u00fcpunkt (ohne Parameter) hinzuf\u00fcgen\r\n    ctrlBefehl = objMen\u00fc.Controls.Add(Type:=msoControlButton, ID:=1)\r\n    With ctrlBefehl\r\n        .Caption = BEFEHL1\r\n        .OnAction = &quot;runBefehl1&quot;\r\n    End With\r\n\r\n    &#039; neuen Men\u00fcpunkt (ohne Parameter) hinzuf\u00fcgen\r\n    ctrlBefehl = objMen\u00fc.Controls.Add(Type:=msoControlButton, ID:=1)\r\n    With ctrlBefehl\r\n        .Caption = BEFEHL2\r\n        .OnAction = &quot;runBefehl2&quot;\r\n    End With\r\n\r\n    &#039; neuen Men\u00fcpunkt (mit Parameter) hinzuf\u00fcgen\r\n    ctrlBefehl = objMen\u00fc.Controls.Add(Type:=msoControlButton, ID:=1)\r\n    With ctrlBefehl\r\n        .Caption = BEFEHL3\r\n        .Parameter = &quot;Test-Parameter&quot;\r\n        .OnAction = &quot;runBefehl3&quot;\r\n    End With\r\n\r\nNoDocumentOpen:\r\nEnd Sub\r\n\r\n&#039; Deinstallation des neuen bzw. bereits vorhandenen Men\u00fcpunktes\r\nSub Uninstall(sMen\u00fcname As String)\r\n    On Error Resume Next\r\n\r\n    CommandBars.ActiveMenuBar.Controls(sMen\u00fcname).Delete()\r\nEnd Sub\r\n\r\n&#039; Befehl 1 (keine Parameter)\r\nSub runBefehl1()\r\n    Call MsgBox(&quot;1. Befehl&quot;)\r\nEnd Sub\r\n\r\n&#039; Befehl 2 (keine Parameter)\r\nSub runBefehl2()\r\n    Call MsgBox(&quot;2. Befehl&quot;)\r\nEnd Sub\r\n\r\n&#039; Befehl 3 (ein \u00fcbergebener Parameter)\r\nSub runBefehl3()\r\n    Call MsgBox(CommandBars.ActionControl.Parameter)\r\nEnd Sub<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Beschreibung Wer viel mit Makros arbeitet m\u00f6chte diese meist auch gern in das Men\u00fc oder als Symbolleiste einbinden. Hier erkl\u00e4re ich, wie man bestehende Makros per VBA als Men\u00fcpunkt in ein vorgegebenes Men\u00fc bringt.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[29,19],"tags":[49,37,38],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-startseite","category-vba-word","tag-programmieren","tag-vba","tag-word"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p5LyzC-2n","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=147"}],"version-history":[{"count":20,"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=\/wp\/v2\/posts\/147\/revisions"}],"predecessor-version":[{"id":2077,"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=\/wp\/v2\/posts\/147\/revisions\/2077"}],"wp:attachment":[{"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kastenmaier.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}