IT仕事

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

投稿日:

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

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

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

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

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

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

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

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

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

-IT仕事

執筆者:

関連記事

no image

「良さそう」と思ってもらうには4つのポイント

経営を伸ばす視覚伝達デザインの鉄則 : 第4回 「良さそう」と思ってもらうには4つのポイントが必要 (1) 伝えたい情報が伝わっているか (2) 伝えたい世界観が伝わっているか (3) アイデンティテ …

no image

自宅で使っているパソコン。 朝から使っていて、昼ごろ、急に動作がのろくなった。 起動してからデスクトップが使えるようになるまで、普段の3倍以上かかる。 現象の出る直前にいろいろハードをいじっていたので …

bigdump.phpという素敵で便利なツールで、救われた。

phpMyAdminでアップロードできなかったので、こちらのツールを使わせてもらった。 CPIのサーバで、2,864,000行/393mb/gz圧縮後25mb、をアップ。 40分位かかった。 作者に感 …

no image

GoogleAnalyticsは複数の管理者で使える

GoogleAnalytics、仕事で使っている。 ホント便利だ。タダだし。 ただ難点として、管理画面に入るには私のIDとパスワードがいるので、ユーザーさんに管理画面に直接アクセスしてもらうことができ …

no image

空メールを送る仕組みをはじめて作るのに苦労した記録

4日間、苦労。モウイヤ。 ■1日目: 携帯から空メールを送ったら、サーバがクリックしてほしいURLと送り主のメルアドを本文に書いて返す仕組み、それを作りたい。しかし何を準備してどうすればよい? まずは …