IT仕事

Excel2007でアドインを作って登録するまでの手順

投稿日:2012年1月17日 更新日:

Googleさまで探してもあまり好みの回答にたどり着かなかったので、自分及び誰かのためになるかと思いメモメモ。

■1.標準モジュールにアドインにしたいコードを作成する。

以下のコードは、単純に、

「セル内にある数字の先頭にシングルコーテーションを付加し、さらにハイフンを取り除く」

電話番号からハイフンを削除してキレイな数字のみにする処理です。0が消えるとイヤなのでシングルコーテーションを付けています。

Sub ハイフン削除1()
For Each c In Selection
v = "'" & c.Text
c.Value = Replace(v, "-", "")
Next
End Sub

Sub ハイフン削除2()
For Each c In Selection
v = "'" & c.Text
c.Value = Replace(v, "ー", "")
Next
End Sub

■2.VBAのThisWorksheetに以下のコードを追加する。

リボンのアドインメニューに、新しいボタンを作る/削除する、コードですね。

—-ここから—-

Public CPop As Office.CommandBarPopup
Private Sub Workbook_AddinInstall() '「Excelのオプション」で登録する際に実行されるコード
Set CPop = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
With CPop
.Caption = "ハイフン削除1"
.OnAction = "ハイフン削除1"
End With
Set CPop = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
With CPop
.Caption = "ハイフン削除2"
.OnAction = "ハイフン削除2"
End With
End Sub
Private Sub Workbook_AddinUninstall() '「Excelのオプション」で削除する際に実行されるコード
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("先頭番号の重複チェック").Delete
Application.CommandBars("Worksheet Menu Bar").Controls("FAXエラーチェック").Delete
End Sub

—-ここまで—-

■3.作ったら、ファイルを「ハイフン削除」アドインとして保存する(拡張子は自動的にxlamになる)。

保存する場所は変えない(C:\Users\ユーザ名\AppData\Roaming\Microsoft\AddIns\)。ネットワークに登録してもいいが、変えると次の4で呼び出すのが面倒なので、テスト中はそのままがよいかも。

■4.Excelアプリにアドインを登録する。

Officeボタンから、「Excelのオプション」「アドイン」「設定」とたどり、表示されるダイアログボックスで、先ほど保存した「ハイフン削除」アドオンが表示されるので、チェックを付けて登録する。

以下、追記:2014/6/20(金)

Excelを閉じると、アドインのメニューが消えてしまった・・・・。
以下のように、open時とclose時にも、メニューを表示する処理を入れるとOk。
(以前とメニュー内容が変わっているのは、本番のをコピペしたから)

Public CPop As Office.CommandBarPopup

Private Sub Workbook_AddinInstall() ‘「Excelのオプション」でアドオン登録する際に実行
Call MenuAdd
End Sub

Private Sub Workbook_Open() ‘Bookを開くときに実行
Call MenuAdd
End Sub

Private Sub Workbook_AddinUninstall() ‘「Excelのオプション」でアドオン削除する際に実行
Call MenuDel
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) ‘Bookを閉じるときに実行
Call MenuDel
End Sub

Private Sub MenuAdd()
Set CPop = Application.CommandBars(“Worksheet Menu Bar”).Controls.Add(Type:=msoControlPopup)
With CPop
.Caption = “先頭番号の重複チェック”
.OnAction = “先頭番号の重複チェック”
End With
Set CPop = Application.CommandBars(“Worksheet Menu Bar”).Controls.Add(Type:=msoControlPopup)
With CPop
.Caption = “FAXエラーチェック”
.OnAction = “FAXエラーチェック”
End With
End Sub

Private Sub MenuDel()
On Error Resume Next
Application.CommandBars(“Worksheet Menu Bar”).Controls(“先頭番号の重複チェック”).Delete
Application.CommandBars(“Worksheet Menu Bar”).Controls(“FAXエラーチェック”).Delete
End Sub

-IT仕事

執筆者:

関連記事

no image

以前から興味のあったCreateerというサービスを試用中。

https://beta2.createer.com/Wordpress 公式サイトにある動画を見れば、大体イメージが掴めると思うけど、テンプレート化されたデザインコンテンツを選択してさらに自身でカス …

no image

来週やるExcelVBAセミナーの準備をしていて、

同じ「飛び物」でもロケットが好きな人とラジコンが好きな人がいるよな、とふと思った。 ロケットの好きな人は、 準備をきちんと整えて、万全を期して発射スイッチを押す・・・飛んだ!あんなに高く。感動! 飛ん …

Jazzy Formsで見積を計算してもらいその結果をメールで送る方法

やりたいことは、 「Webサイトの見積フォームを設置し、それを使ってお客さんに見積をしてもらい、その見積結果を管理者宛に送信する」 ・・・というもの。 WordPressのプラグインで、「Jazzy …

Word2013で「内容に問題があるため開くことができません」エラー、なんとか生還

昼休み前に保存して閉じたWord文書を、昼休み開けに開くと、上記エラー発生。 午前中いっぱいかかって作った仕事がパー! ・・・ということにしたくなかったので、あれこれもがいてみたら、何とか開くことがで …

PhotoshopElementsでWebデザイナーが作ったようなキレイなボタンを作るには

PSPについては、 思わず押してみたくなる、いとも簡単なボタンの作り方 | 楽してプロっぽいデザイン | Forty-N-FiveBlog など、Web上にいろいろ解説があるけども、Elementsに …