OS:windowsXP HomeEdition
ソフト:Excel2003
アドインを作成し配布したいのですが、xla形式で保存しエクセル上でアドインさせ、
作成したメニューからテスト起動させてみると、アドインの元のファイル(拡張子xls)が
展開してしまいます。展開させずにアドインプロシージャを起動させたいのですが
何が原因か調べてもわかりませんでした。知っている方、ご助言御願い致します。
以下に、私の作成したマクロを記述します。
マクロ解説HPで勉強しつつ作成致しました。
~~~~~~~~~~~~~~~~~~~~~~~~~
<ThisWorkBookへの記述>
Dim mySubMenu As CommandBarControl
Sub MakeSubMenu()
Dim myMenu As CommandBar
Dim cmdSubMenu As CommandBarControl
'すでにサブメニューがあれば削除する
DelSubMenu
Set myMenu = Application.CommandBars("worksheet Menu Bar")
Set mySubMenu = myMenu.Controls.Add(Type:=msoControlPopup)
mySubMenu.Caption = "メニュー"
Set cmdSubMenu = myMenu.Controls("メニュー").Controls.Add(Type:=msoControlButton)
cmdSubMenu.Caption = "コマンド1"
'サブメニューでコマンド1を選択したとき cmd1() を呼び出す
cmdSubMenu.OnAction = "cmd1"
Set cmdSubMenu = myMenu.Controls("メニュー").Controls.Add(Type:=msoControlButton)
cmdSubMenu.Caption = "コマンド2"
'サブメニューでコマンド2を選択したとき cmd2() を呼び出す
cmdSubMenu.OnAction = "cmd2"
End Sub
Sub DelSubMenu()
'メニューバーのサブメニューを削除する
On Error Resume Next
mySubMenu.Delete
End Sub
<標準モジュールへの記述>
Private Sub cmd1()
MsgBox "コマンド1を選択しました"
End Sub
Private Sub cmd2()
MsgBox "コマンド2を選択しました"
End Sub
~~~~~~~~~~~~~~~~~~~~~~~
尚、マクロは簡略化し、のせております。
よろしく御願い致します。
No.2ベストアンサー
- 回答日時:
>マクロは簡略化し、のせております。
とはいっても、出来る限り、イベントのひとつぐらいは省略しないでほしいです。コードが読めなくなります。
問題点は、片方のプロシーシャを、ThisWorkbook モジュールに入れておいて、
標準モジュールのPrivate キーワードを付けたプロシージャは、ThisWorkbookから、呼び出せませんね。
これを、同じThisWorkbookに入れるなら、そのままでも可能です。
>Private Sub cmd1()
> MsgBox "コマンド1を選択しました"
>End Sub
>Dim mySubMenu As CommandBarControl
それと、これは、モジュール・スコープの変数にする必要はありませんね。
DelSubMenu の代わりに
Private Sub Workbook_Open()
Dim myMenu As CommandBar
Dim cmdSubMenu As CommandBarControl
'すでにサブメニューがあれば削除する
''DelSubMenu '←ここは不要
Set myMenu = Application.CommandBars("Worksheet Menu Bar")
On Error Resume Next
myMenu.Controls("メニュー").Delete
On Error GoTo 0
Set mySubMenu = myMenu.Controls.Add(Type:=msoControlPopup, Temporary:=True)
mySubMenu.Caption = "メニュー"
ユーザーメニューを加える時は、Temporary:=True は、必ず入れてください。
VBAが失敗しても、再起動すれば、ユーザー・メニューは消えています。
すでにサブメニューがあれば削除するということで、サブルーチンで、
mySubMenu.Delete
を元のコードから供給するのでは、ほとんど意味がありません。しかし、これは、コーディング・マナーというのか、あくまでも、削除するのものは自分のマクロのみにします。Reset を使うものもありますが、数多くなると、Reset は使いません。
>マクロ解説HPで勉強しつつ作成致しました。
本当にVBAを勉強したいのでしたら、Webサイトでは、よろしくありません。体系的な知識を身につけにくく、知識が断片的になりやすいのと、いろんな寄せ集めて、統合化しにくいのです。コーディング・スタイルというものも、人それぞれ、ないようでいてありますから、そういうものを混ぜてしまうと、読みにくくなります。
No.1
- 回答日時:
展開してしまうのは、以下の部分のOnActionで「xls」ファイルにある「cmd1」をマクロ登録されてしまっている為、だと考えられます。
cmdSubMenu.OnAction = "cmd1"
つまり、「xls」が閉じられた状態で、開いているファイルのどこにも同じプロシージャ名が存在しない状態で、メニューが作成されれば、「xla」ファイルに対してマクロ登録されるはずです。
なので、開いている全てのファイルの中に、同じプロシージャ名が存在しない状態(無論、個人用マクロブックにも存在しない状態)にして、「MakeSubMenu」を実行すればいいです。
まぁ、以下の様にファイル名も指定して登録してもいいかもしれません。
cmdSubMenu.OnAction = ThisWorkbook.Name & "!cmd1"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
飲食店で、一人で食事をしてい...
-
9月一臂の〔一臂〕の意味
-
蒙古タンメンとプルダックポッ...
-
Excel2016でプルダウンのメ...
-
ACCESS ファイルへのアクセス...
-
イッピとついたち
-
吉野家のご飯って何故いつもあ...
-
MACで、窓の杜のようなサイト
-
ヘルシオの2段か1段で迷ってい...
-
macのシステム音
-
一緒にポテトはいかがですか?
-
正しい丁寧語を教えて下さい。
-
CoCo壱番屋に地域性ありま...
-
すき家のアルバイトは
-
1円玉がたくさんくっついてとれ...
-
~kっていくら???
-
マクドナルドのスマイル
-
EXCELのプルダウンメニューを全...
-
「一日」はどう読むのが正しいの?
-
卒業論文が書けなくて困ってい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
飲食店で、一人で食事をしてい...
-
Excel2016でプルダウンのメ...
-
9月一臂の〔一臂〕の意味
-
「一日」はどう読むのが正しいの?
-
蒙古タンメンとプルダックポッ...
-
マクドナルド、ミスタードーナ...
-
マクドナルド
-
ケンタッキーバーレルの「バー...
-
MACで、窓の杜のようなサイト
-
漢字の読み方 「火」と「会」を...
-
モスバーガーのハンバーガーは...
-
ACCESS ファイルへのアクセス...
-
マックで働いてるものなのです...
-
マクドナルドのバイトをしてい...
-
windowsのワードで作った文章を...
-
700Wの電子レンジは、コンビニ...
-
1円玉がたくさんくっついてとれ...
-
ウィンドウズからマックへのメ...
-
吉野家のご飯って何故いつもあ...
-
すき家のアルバイトは
おすすめ情報