Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : 指定なし)
マクロのプルダウンメニュー項目を固定したい
投稿日時: 25/03/23 15:40:47
投稿者: oyoyo_president

ワード マクロで 複数のマクロを起動する プルダウンメニューを作ったんですけども メニュー項目の表示順序が 使用頻度に応じて変化するようなので 分かりにくくて困ってます。
 マクロ内で 記述 した配列 順序に固定する方法はあるんでしょうか?
よろしくお願いします。

回答
投稿日時: 25/03/25 14:42:09
投稿者: Suzu

oyoyo_president さんの引用:
ワード マクロで 複数のマクロを起動する プルダウンメニューを作ったんですけども メニュー項目の表示順序が 使用頻度に応じて変化するようなので 分かりにくくて困ってます。
 マクロ内で 記述 した配列 順序に固定する方法はあるんでしょうか?
よろしくお願いします。

 
『プルダウンメニュー』とは、何を指しているでしょうか?
  リボン上のボタンを押すと、更に選択肢が表示される
  ドキュメント上で、右クリックで表示されるコンテキストメニュー
   :
  他 etc
 
また、それらを、どのようにして実装しているのですか?
 customUI を いじっているのか
 AutoExec にて CommandBars Lists あたりをいじっているのか
 ユーザーフォームに コンボボックス/リストボックスを配置
  :
 
VBA内で、配列を使っているのですか?
その配列順序とは? 何か動的に順序を変えているのですか?
 それとも、VBE上のコードの記載順?
 
直近の使用した履歴によって、順番を変えているという事であれば
その機能を、VBA内に実装している可能性が高いと思います。
 
何にしても、具体的に こうしている が判らないと、コメントしづらいです。

投稿日時: 25/04/03 11:40:08
投稿者: oyoyo_president

舌足らずでした。
以下のようなVBAコートでボタンを作り表示させる場合のことです。
複数のボタンを作ると使用開始後、コード内の定義順から使用頻度順にボタン表示位置が変動するのですが、それを当初の定義順に固定したいということです。
--------VBAコード例-----------------------------------------
 
With Application.CommandBars("Menu Bar")
  With .Controls.Add(Type:=msoControlPopup)
    .Caption = oyaBotan '親ボタン、この中に複数のボタンをプルダウン表示
'-------------------------------------------------------
  With .Controls.Add(Type:=msoControlPopup)
           .Caption = "[特別処理 その他メニュー](&Z)"
           With .Controls.Add(Type:=msoControlButton)
                 .Caption = "番号データベース検索(&B)"
               .OnAction = "pattool.番号検索"
           End With
 ....

回答
投稿日時: 25/04/03 14:04:53
投稿者: Suzu

引用:
--------VBAコード例-----------------------------------------
 
With Application.CommandBars("Menu Bar")
  With .Controls.Add(Type:=msoControlPopup)
    .Caption = oyaBotan '親ボタン、この中に複数のボタンをプルダウン表示
'-------------------------------------------------------
  With .Controls.Add(Type:=msoControlPopup)
           .Caption = "[特別処理 その他メニュー](&Z)"
           With .Controls.Add(Type:=msoControlButton)
                 .Caption = "番号データベース検索(&B)"
               .OnAction = "pattool.番号検索"
           End With
 ....

 
手元 Word 2019
  Normal.dotm に AutoExec にて 提示VBAが実行される様にしました。
 使用頻度による変動はありませんでした。
 
 
WEB検索しても
 
最近使用したコマンドの表示位置が変わる office Excel
https://www.syson.co.jp/technote/windows/%E6%9C%80%E8%BF%91%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E8%A1%A8%E7%A4%BA%E4%BD%8D%E7%BD%AE%E3%81%8C%E5%A4%89%E3%82%8F%E3%82%8B%E3%80%80office-excel.html
 
古いバージョンの Excel ではあった様ですが、
手元のバージョンでは同様の設定項目を見つける事はできませんでした。
 
 
考えうるのは
1. OnActuion の タイミングで、 Control をDELETEして、Add しなおす。
 
2. アドインの中で、最近使用したメニューを保存する様なアドインがありました。
  その様なアドインが影響を与えている
 
エクセル統計/エクセル統計2015 ユーザーサポート
https://bellcurve.jp/user/ex/faq010.html?srsltid=AfmBOoqd4iUvqDMGXrx0L-TH8IxhMZtWbANIBM-TM5HfdxyBUsA_R-_Z
 
 
アドイン を全てOff にして、新規 ドキュメントに対し同じコードを実行しても
同様に使用頻度にて並び替わるのでしょうか?
 
別PCや、別アカウントを作成し その アカウントで 同じ事を行っても再現しますか?
 
 
※Word のバージョンは記載する様にしてください。

投稿日時: 25/04/05 17:04:23
投稿者: oyoyo_president

質問にお付き合い頂いてありがとうございます。
word2003です。
多分のバージョンの影響だと思いますね。
これにて解決とさせてください。
ありがとうございました。