HOME > Access VBA > Ribbon > はじめに

はじめに



ユーザー インターフェイスに関するエラーを表示する

ナビゲーション ウィンドウにシステム オブジェクトを表示する

参照可能なライブラリファイルを追加する

テーブルUSysRibbonsを作成する

リボン名を選択する

イメージ用のテーブルUSysRibbonImagesの作成

ユーザー インターフェイスに関するエラーを表示する
 1.[ファイル]の[オプション]メニューを実行します。
 2.[クライアントの設定]の[標準]セクションの[アドイン ユーザー インターフェイスに関するエラーを表示する]にチェックを入れます。
 3.[OK]ボタンを押します。
アドイン ユーザー インターフェイスに関するエラーを表示する

 カスタム UIに間違いがある場合は下記のようなエラーが表示されます。
エラーメッセージ

このページの上


ナビゲーション ウィンドウにシステム オブジェクトを表示する
 1.[ファイル]の[オプション]メニューを実行します。
 2.[現在のデータベース]の[ナビゲーション]セクションの[ナビゲーション オプション]ボタンを実行します。
 3.[表示オプション]枠内の[システム オプジェクトの表示]にチェックを入れます。(USysRibbonsのチェックも確認)
 4.[OK]ボタンを押します。
システム オプジェクトの表示
 システム オブジェクトのUSysRibbonsテーブルを表示できます。
 開発が終了したら運用時にはシステム オプジェクトを表示しない方が良いでしょう。

このページの上

参照可能なライブラリファイルを追加する
 1.「Visual Basic Editor」の[ツール]の[参照設定]メニューの参照可能なライブラリファイルの「Microsoft Offece 15.0 Object Library」にチェックを入れます。
   (15.0はバージョンにより異なります。Office2007は12.0、Office2010は14.0)
 2.[OK]ボタンを押します。
参照可能なライブラリファイル

参照していないとCallback関数の実行時に下記のようなエラーメッセージが表示されます。
エラーメッセージ
 参照していないとCallback関数はコンパイルでエラーになります。

このページの上

テーブルUSysRibbonsを作成する
 1.[作成]タブの[テーブルデザイン]ボタンを実行します。
 2.下記のようなフィールドを定義します。
フィールド名データ型説明(オプション)
IDオートナンバー型主キーで長整数型
RibbonName短いテキスト255 リボン名
RibbonXML長いテキストメモ型 リボンのXML

 3.テーブルの名前を「USysRibbons」で保存します。
USysRibbons

 4.RibbonNameにリボンの名前をRibbonXMLのXMLコードを入力します。
RibbonNameとRibbonXMLのサンプル

このページの上


リボン名を選択する
 ファイルを開いたときに表示するリボンを設定します。
 1.[ファイル]の[オプション]メニューを実行します。
 2.[現在のデータベース]の[リボンとツール バーのオプション]セクションの[リボン名]から選択します。
 3.[OK]ボタンを押します。
 4.ファイルを閉じます。次回からファイルを開くと選択したリボンが表示されます。
   フォームやレポートに関連付けるには、プロパティの「リボン」で設定します。
リボンとツール バーのオプション

フォームやレポートにリボンを割り当てる
 1.レイアウト ビューで、フォームまたはレポートを開きます。
 2.プロパティシートの[その他] タブの[リボン名]ボックスからリボンを選択します。
 3.フォームまたはレポートを保存、終了します。再び表示すると、選択したリボンが表示されます。
フォームのリボン名

このページの上

イメージ用のテーブルUSysRibbonImagesの作成
 ここでは画像ファイルをAccessのテーブルの中に格納し、コントロールに設定する方法を説明します。

画像ファイルを格納するテーブルの作成
 1.[作成]タブの[テーブルデザイン]ボタンを実行します。
 2.短いテキストと添付ファイルのフィールドを定義します。
 3.テーブルの名前を「USysRibbonImages」で保存します。

フィールド名データ型
IDオートナンバー型
ImageName短いテキスト
ImageFile添付ファイル

イメージを操作するためのフォームを作成する
 1.ナビゲーション ウィンドウで、USysRibbonImagesテーブルをクリックします。
 2.[作成]タブで、[フォーム]を実行します。
 3.フォームの名前を"USysRibbonImages"で保存します。
 4.VBEではフォームの添付ファイルのフィールドのPictureDispでイメージを取得します。

   この例は画像名を「control.Id」で検索しているが、重複する場合は「control.Tag」を使うと良いでしょう。
Private myRibbon As IRibbonUI ' リボン
Private ImageForm As Form ' 画像のフォーム
Private rs As DAO.Recordset2 ' 画像のレコードセット

Sub onLoad(ribbon As IRibbonUI) ' リボンの初期処理
  DoCmd.OpenForm "USysRibbonImages", , , , acFormReadOnly, acHidden ' 画像のフォームを非表示で開く
  Set ImageForm = Forms("USysRibbonImages")
  Set rs = ImageForm.Recordset
  Set myRibbon = ribbon ' リボンの表示を更新できるようにするためにリボンをセットする
  myRibbon.Invalidate ' リボンの表示を更新する
End Sub

Sub getImage(control As IRibbonControl, ByRef image) ' テーブルからイメージを取得し、イメージをコントロールに設定する
  On Error Resume Next
  rs.FindFirst "ImageName='" & control.Id & "'" ' フィールド[ImageName]で検索する。画像名が重複する場合は「control.Tag」を使うと良い
  If rs.NoMatch Then
    ' この例は画像なしの場合は何もしない。
  Else
    Set image = ImageForm.ImageFile.PictureDisp ' フィールド[ImageFile]から画像を読み込む
  End If
  On Error GoTo 0
End Sub
 5.運用時にUSysRibbonImagesのテーブルやフォームは表示しないほうが良いでしょう。
   右クリックしてプロパティのメニューを実行し属性を「隠しオブジェクト」にします。
   「ファイル」の「オプション」メニューの「現在のデータベースセクション」の「ナビゲーションオプション」の「表示オプション」枠の「隠しオブジェクト表示」ボタンのチェックを外します。
   私のサンプルのCounter_Imageを参照してください。
   画像の少ない場合はVBEのUserFormImageコントロールのPictureを使用する方法もあります。(サンプルはNowです)

 外部にある画像ファイルを読み込むにはCallback関数のgetImage内でLoadPicture関数を使います。
  Set image = LoadPicture(Application.CurrentProject.Path & "\image.jpg")
 Visual StudioですがIPictureDispに変換するPictureConverterクラスの説明が下記のマイクロソフトのサイトにあります。
  「2007 Office Fluent リボンをカスタマイズする (開発者向け) (パート 1/3)」の「イメージを読み込む」

このページの上