Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1898 / 13645 ツリー ←次へ | 前へ→

【71144】アドインを登録して、メニュー表示 りんご 12/2/2(木) 10:56 質問[未読]
【71146】Re:アドインを登録して、メニュー表示 とおりすぎ 12/2/2(木) 11:59 回答[未読]
【71147】Re:アドインを登録して、メニュー表示 Jaka 12/2/2(木) 12:02 発言[未読]
【71148】Re:アドインを登録して、メニュー表示 kanabun 12/2/2(木) 13:44 発言[未読]
【71153】Re:アドインを登録して、メニュー表示 りんご 12/2/2(木) 17:38 お礼[未読]

【71144】アドインを登録して、メニュー表示
質問  りんご  - 12/2/2(木) 10:56 -

引用なし
パスワード
   よろしくお願い致します。
私たちが業務でよく使用する市販ソフトで、アドインを登録すると、メニューが自動的に出てくるものがあります。


階層化されていて、下のような感じになっています。

集計
−全国(xxx.xlaのZenkoku)
−関東(xxx.xlaのKanto)
−東北(xxx.xlaのTouhoku)
−関西(xxx.xlaのKansai)
 ・
 ・
 ・

()内は、マクロ名。
xxx.xlaはパスワードで保護がかかっているため、中身はみれません。


これは、どのようなしくみでメニューが出てくるのでしょうか?

今、作成しているマクロもこのような形にして欲しいとリクエストがあるのですが(同じであると、インストールが簡単なため)、作りが全く分からないので、ご質問しました。


現在、xxx.xlaも、上記に相当するZenkoku、Kanto...は作成済みです。今は、DEBUG中なのでVBAのエディタから実行しています。


<最終形>

・階層化したメニューを表示、そこから実行可
・アドインは、パスワード要


このサイトが参考になる。等、何でも構いませんので、アドバイス頂きたく、よろしくお願い致します。

【71146】Re:アドインを登録して、メニュー表示
回答  とおりすぎ  - 12/2/2(木) 11:59 -

引用なし
パスワード
   Workbook_AddinInstallでメニューに登録し、
Workbook_AddinUninstallでメニューから削除。

【71147】Re:アドインを登録して、メニュー表示
発言  Jaka  - 12/2/2(木) 12:02 -

引用なし
パスワード
   エクセルファイルが開いた時に、メニューを作るコードが書いてあるだけです。

Sub Auto_Open
とか
Private Sub Workbook_Open()
に。

これを名前をつけて保存する時に種類でアドインを選ぶだけ。

で、
アドインの入れる場所。(Win2000 and Office2003の場合だけど。)
C:\Program Files\Microsoft\OFFICE11\Library

間違っても、ここに入れないほうが安全。
MsgBox Application.UserLibraryPath

メニュー等はここに少し書いてあります。
(2007以降は、解りません。)

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=56;id=FAQ
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=42;id=FAQ

パスワード保護は、普通にパスワード保護すればいいです。
VBエディタで、
ツール → VBAProjectのプロパティ で保護。


書き直して追加、

マクロでメニューを作らなくてもユーザー設定で作っておいてブックにテンプしておいてもいいですし。
その際、ブックを閉じる時ボタンやメニュー等を削除するコードを入れておくと、アドインを閉じた時に貸すが残らなくて良いです。
詳しく書くとその他色々あるのでこの辺で。

【71148】Re:アドインを登録して、メニュー表示
発言  kanabun  - 12/2/2(木) 13:44 -

引用なし
パスワード
   ▼りんご さん:こんにちは〜
>・階層化したメニューを表示、そこから実行

この部分に関してだけ。
カスタムメニューバーを作成し、そこに「階層化したメニュー」を
作成している例です。
この例では、プロシージャ↓は ThisWorkBook に書いています。
OnActionで 指定のマクロを呼び出すルーティンも 同じThisWorkbook
内に書いています。

Sub CustomMenu()
  Dim myCBar As CommandBar
  Const cbName = "User MenuBar"  '作成するメニューバーの名前
  
  On Error Resume Next
  Application.CommandBars(cbName).Delete
  On Error GoTo 0
  
  Set myCBar = Application.CommandBars.Add(Name:=cbName, _
    Temporary:=True)   
  
'-----[ファイル]メニューの作成 -----
  With myCBar.Controls.Add(Type:=msoControlPopup)
    .Caption = "ファイル(&F)"
   'サブメニュー[保存]コマンドの作成
    With .Controls.Add(Type:=msoControlButton)
      .Caption = "保存(&S)"
      .OnAction = "ThisWorkbook.SaveBook"
    End With
   'サブメニュー[終了]コマンドの作成
    With .Controls.Add(Type:=msoControlButton)
      .Caption = "終了(&Q)"
      .OnAction = "ThisWorkbook.QuitExcel"
    End With
    .BeginGroup = True     '区切り線の表示
  End With
  
'-----[オプション]メニューの作成 -----
  With myCBar.Controls.Add(Type:=msoControlPopup)
    .Caption = "オプション(&O)"
    .BeginGroup = True     '区切り線の表示
  
    'サブメニュー[Excelメニュー]コマンドの作成
    With .Controls.Add(Type:=msoControlButton)
      .Caption = "Excelメニュー(&E)"
      .OnAction = "ThisWorkbook.ResetMenuBar"
    End With
  End With
  
'---- ツールバーの表示 -----
  With myCBar
    .Visible = True
    .Position = msoBarFloating ' msoBarTop
  End With
End Sub

Private Sub SaveBook()
  MsgBox "Save Book" 'プログラムを呼び出す
End Sub
Private Sub QuitExcel()
  MsgBox "Quit Excel" 'プログラムを実行
End Sub

Private Sub ResetMenuBar()
  MsgBox "Reset MenuBar" '処理を記述
End Sub

【71153】Re:アドインを登録して、メニュー表示
お礼  りんご  - 12/2/2(木) 17:38 -

引用なし
パスワード
   みなさま

ありがとうございます。
みなさまの書き込みを100%理解しておりませんので、これからTryしてみます。

Try後、質問あるかと思いますので、その際にはまたよろしくお願い致します。

1898 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free