IT仕事

Excel2013のリボン&タブのカスタマイズで格闘。

投稿日:

今まで、BookのXMLにリボンメニューを仕込むのは難しいのだと思っていた。
実際、Excel2003でアドインメニューを作ったことがあるが、そのときは相当苦労した。

しかし無料のツールを使えば、かなり簡単にリボンにメニューを配置できることがわかった。
Excel 2007 アドインでリボンメニューを作成する方法: ある SE のつぶやき

自分の場合、こちらの記事を参考に、以下のようなコードを書いた。
Office 2007/2010・リボンのカスタマイズ 初心者備忘録

[code]
Sub Ribbon_onLoad(ribbon As IRibbonUI)
Set myRibbon = ribbon
Call myRibbon.ActivateTab("customTab")
End Sub
[/code]

ファイルをロードした直後にリボンにカスタムタブをセットするという、単にこれだけですが、結構このコードにするのに時間がかかった。

また、Excelを起動してからファイルを開くとカスタムタブは自動で開くが、エクスプローラからのダブルクリックでファイルを開くと、リボンのカスタムタブが開かずにホームタブのまま。。。

さらに、Workbook_Openの際の処理(IF文でパスワードチェック)と、Ribbon_onLoadの際の処理が、バッティングしているような感じで、ファイルを開くときに、「オブジェクト変数または With ブロック変数が設定されていません」エラーが出ることも。

半日ぐらいあれこれいじって悩んで、結局、Ribbon_onLoadに入れてしまえばよいのではないかと考え、そうしたら、うまくいった。以下のコードに落ち着いた。
起動時は、ExcelのOpenなどの通常のイベントの後に、リボン関係のXMLがロードされる、そんな順番になっている、ということかな。

[code]
Sub Ribbon_onLoad(ribbon As IRibbonUI)
Set myRibbon = ribbon
Call myRibbon.ActivateTab("customTab")

‘以下、ThisWorkbookのOpenイベントに書いたものを移動

Dim Sht As Worksheet, ActSht As String, r As String
Application.ScreenUpdating = False
If Sheets("system").Range("A1") = "" Then ‘1なら管理者、空白なら職人がログイン
If InputBox("パスワード") = "aaa" Then
Call ForAdminMeisai
Sheets("system").Range("A1") = 1
Else
MsgBox "パスワードが違います"
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
End If
Else
End If
Application.ScreenUpdating = True
End Sub
[/code]

-IT仕事

執筆者:

関連記事

no image

瞬NAS

月刊アスキー2005年6月号の記事に、NAS特集。 KNOPPIXを使う方法が述べられていた。 1.KNOPPIXでPCをブート 2.スタートボタン->KNOPPIX->Service->Start …

no image

楽天RPP広告「ランク別入札最適化」は微妙

最近の楽天のRPP広告、「ランク別入札最適化」をプッシュしているが、これってみんな使っているんだろうか?効果は出ているんだろうか? というのは、うちの店では、効果が出ていない。機能のスイッチをオンにし …

no image

フォームを直接Accessで印刷プレビューし、閉じるときのイベントで処理をしたい

困ったこと: 前提として、自分とこのシステムは、フォームを直接Accessで印刷プレビューして、そのまま印刷できるように作ってある。 しかし、リボンに印刷プレビューを閉じるボタンがある一方で、フォーム …

ここ数日Google Apps Script を触っていてわかったこと

・セル操作については、思ったよりも色々できる。 ・実行速度は遅い。 ・Googleアカウントを持っている人に配布する/共有するには、とても便利。 ・スクリプトを使った画像の配置もできる(ただし画像それ …

no image

WPに投稿、評価機能を設ける

■プラグインの準備 WP-PostRatingsをインストールする。 WP-PostRatingsの日本語化ファイルをFTPで上書きする。 ■評価させたい投稿を選択 投稿(コメント)と評価を設けたい投 …