午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

エクセルの右クリックメーニューにマクロを登録してみた

右クリックメニューに昨日

gogowaten.hatenablog.com

作った値貼り付けのマクロを登録

f:id:gogowaten:20191014140223p:plain

f:id:gogowaten:20191014140209p:plain

まずは右クリックメニューの場所を確かめる
コマンドバーとそのコントロールの一覧を作ってみて見てみると
僕の環境ではセルの右クリックメニューはコマンドバーの36番目らしい
 
Alt+F11でVBAを起動してイミディエイトウィンドウで確認してみる

f:id:gogowaten:20191014140252p:plain

イミディエイトウィンドウを表示して36番目の名前を確認
?application.CommandBars(36).name
↑を書いてカーソルをこの行においた状態でエンターキーを押す
Cellが返ってきたのでセルの右クリックメニューは
36番目であっていることが確認できた
 
 
イメージ 3
貼り付けと形式を選択して貼り付けの間に追加したいので場所の確認
上から数えて4か5番目位なので5番で確認してみる
 
イメージ 4
36番目のコマンドバーの5番目のコントロールの表示文字は?
イミディエイトウィンドウに
?application.CommandBars(36).Controls(5).Caption
でエンターキーを押すと
形式を選択して貼り付け(&S)...
と返ってきたので形式を選択して貼り付けは5番めと確認できた
5番目の前に追加すればいいので
 
イメージ 5
application.CommandBars(36).Controls.Add before:=5
これで5番目の前にボタンの追加になる
行の先頭に?が付いていないので実行になる
 
イメージ 6
右クリックメニューを出してみるとボタンが追加されているのがわかる
次はボタンに文字を追加の前に場所の確認
5番目の前に追加したんだから追加したボタンは5番になっていて
表示されている文字はないから空白が返ってくるはず
 
イメージ 7
?application.CommandBars(36).Controls(5).Caption
で5番目を確認してみると空白が返ってきたのであっている
次は文字の追加
 
イメージ 8
表示する文字は値貼り付けにしてみた
application.CommandBars(36).Controls(5).Caption = "値貼り付け"
を実行
 
イメージ 9
表示されるようになった
最後はマクロの登録
 
イメージ 10
application.CommandBars(36).Controls(5).OnAction = "値貼り付け"
Onactionに登録したいマクロの名前を入れる

f:id:gogowaten:20191014140322p:plain

登録したいマクロの場所は個人用マクロブックのPERSONAL.XLSBに
あったんだけど特にファイル名とかいれなくても動いた
動いたんだけど昨日作ったこのマクロではエラーが出る
セルのコピーからの貼付けなら問題ないけど
普通のテキストやウェブブラウザの文字をコピーして貼り付けようとすると
エラーになる
 
 
 
2014年3月13日追記
修正したマクロは↓
エクセル2007値貼り付けのマクロの不具合を修正 - 午後わてんのブログ - Yahoo!ブログ
2014年3月13日追記ここまで

昨日は値貼り付けのマクロを作るよりもとからある値貼り付けのボタンを
コピーして登録すればいいじゃないかと思いついて探したんだけど
見当たらなかったのでマクロを登録した
エクセル2000の時は当たり前のようにわかりやすいところに値貼り付けの
ボタンがあったんだけどエクセル2007ではなくなってしまったのかな?

f:id:gogowaten:20191014140340p:plain

セルを右クリックで移動したあとに出てくるメニューで似たようなものはあって
ここに値のみをコピーっていうのを試してみたんだけど
ファイルの新規作成の画面が出てくるだけだった