- ベストアンサー
Book(.xls)→アドイン(.xla)に関する質問
現在Excelにて、様々なメニューを作成したBook(.xls)があります。これをアドイン(.xla)にしようと思っています。 元Bookの「様々なメニュー」の中に、イベントプロシージャを使用したマクロも登録されていますが、アドイン化した後も使用出来る様にするには、 Private Sub Workbook_AddinInstall() Private Sub Workbook_AddinUninstall() にて、どのような記述が必要なんでしょうか? 教えて頂ければと思います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 どのブックでもShiftキーを押しながら右クリックした場合には オリジナルのメニューを出したいということですね。 だいたい以下のような感じになります。 ↓を.xlaで保存して、アドイン登録して試してみてください。 (ThisWorkbookモジュール) Option Explicit Private WithEvents xlApp As Application Private Sub Workbook_Open() Set xlApp = Application End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Set xlApp = Nothing End Sub Private Sub xlApp_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Dim CB As CommandBar Dim CT As CommandBarControl Dim i As Integer If GetAsyncKeyState(vbKeyShift) <> 0 Then Cancel = True On Error Resume Next Application.CommandBars("MyMenu").Delete On Error Resume Next Set CB = Application.CommandBars.Add("MyMenu", msoBarPopup, , True) For i = 1 To 3 Set CT = CB.Controls.Add(msoControlButton) With CT .Style = msoButtonCaption .Caption = "ボタン" & i .OnAction = "MACRO1" End With Next i CB.ShowPopup Set CT = Nothing Set CB = Nothing End If End Sub (標準モジュール) Option Explicit Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As Long) As Long Sub MACRO1() MsgBox CommandBars.ActionControl.Caption & "がクリックされました。" End Sub
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>どのような記述が必要なんでしょうか? アドインの登録と削除([ツール]-[アドイン])のイベントで動作するので・・・ 登録時のアドインの初期化が必要なら記入します。 また、ツールバーなどにアドイン用のメニューを設定するなら、 メニューの登録と削除を行うプログラムを書きます。 実際に何が必要なのかはアドインにしたプログラムによって違うので、実際の作者以外には答えられないでしょう。 >「様々なメニュー」の中に、イベントプロシージャを使用したマクロも登録されていますが、アドイン化した後も使用出来る様にするには、 どのようなイベントか解りませんが、通常のイベントは何も変更する事無く動作します。
お礼
ここで質問したのが、まだ2回目で慣れてない部分と、自分自身がSE等の経験無くプログラム関係の知識が粗いので、下手な質問をしてしまいました。すいません。これから、気を付ける様にしたいと思います。
補足
すいません。質問の仕方が悪かったです。 下記URLの質問をして、回答を頂きました。この中で「処理したい内容(1)」について、masa_019さんから回答を頂きました。そして、これで方針を決めました。 http://oshiete1.goo.ne.jp/qa2649013.html これを使用してアドインにしたいと思っています。アドインにした後、動作上問題無く使用出来れば良いと思ってます。 その方法が分からないとの意味です。
お礼
2度も、的確な回答をありがとうございます。 アドインで正常な動作を確認しました。 これらの問題は、SEの実務経験者でない私にとって、ずっと考えていましたが分からなかった問題でした。 とってもためになりました。感謝です。