Office XP CommandBars の Mask プロパティと Picture プロパティを設定する方法

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
Microsoft Office XP では、CommandBarButton オブジェクトに Mask プロパティと Picture プロパティという 2 つの新しいプロパティが導入されました。これらのプロパティを使用して、独自に作成したコマンド バー コントロールに画像を配置できます。

: これらのプロパティは、Microsoft Office 2003 でも利用できます。
詳細
Mask プロパティと Picture プロパティは、IPictureDisp 型として定義されます。この型は Stdole ライブラリのメンバです。IPictureDisp は、プロセスの境界を越えてマーシャリングできないメソッドを使用しています。そのため、Mask プロパティと Picture プロパティはインプロセスでのみ呼び出すことができます (VBA マクロ、オートメーション アドイン、および ActiveX DLL はインプロセスで実行されます)。この動作の詳細については、「関連情報」を参照してください。

以下のサンプルでは、マスクされた画像を使用した CommandBar ボタンを追加するオートメーション アドインを作成する方法を示しています。

Picture と Mask の画像を作成する手順

  1. Microsoft ペイントを起動します。[変形] メニューの [キャンバスの色とサイズ] をクリックします。画像のサイズを 32 x 32 に変更し、[OK] をクリックします。
  2. 描画面に黄色の顔を描きます。円を囲む領域を青で塗りつぶします。

    サンプルの Circle.bmp の画像。この画像の作成手順はこの資料に記載されています。
  3. 画像を Circle.bmp として保存します。
  4. マスクを作成するには、円を黒で塗りつぶし、円の外側の領域を白で塗りつぶします。マスクの画像を CommandBar コントロールに追加するときに、マスクの黒の領域を可視にし、白の領域を透明にします。

    サンプルの Mask.bmp の画像。この画像の作成手順はこの資料に記載されています。
  5. 画像を Mask.bmp として保存します。

COM アドインを作成する手順


  1. Visual Basic を起動し、新しいアドイン プロジェクトを作成します。
  2. [プロジェクト] メニューの [参照設定] をクリックします。XP より前のバージョンの "Microsoft Office" タイプ ライブラリが有効になっている場合は、そのタイプ ライブラリを無効にし、Microsoft Office XP のタイプ ライブラリを有効にします。[OK] をクリックします。
  3. プロジェクト エクスプローラで、[frmAddin] を右クリックし、[frmAddin の解放] をクリックします。
  4. プロジェクト エクスプローラで、[デザイナ] の下の [Connect] をダブルクリックします。[アプリケーション] ボックスの一覧の [Microsoft Excel] をクリックし、[既定のロード方法] ボックスの一覧の [Startup] をクリックします。
  5. [表示] メニューの [コード] をクリックし、アドインのコードを以下のコードに置き換えます。
    Option ExplicitDim oExcel As ObjectDim WithEvents oButton As Office.CommandBarButtonPrivate Sub AddinInstance_OnConnection(ByVal Application As Object, _ ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _ ByVal AddInInst As Object, custom() As Variant)  Dim oPic As stdole.IPictureDisp  Dim oMask As stdole.IPictureDisp  ' Load the picture and mask.  Set oPic = LoadPicture(App.Path & "\circle.bmp")  Set oMask = LoadPicture(App.Path & "\mask.bmp")  ' Save an instance of our application.  Set oExcel = Application  ' Create a new button on the standard CommandBar.  Set oButton = oExcel.CommandBars("Standard").Controls.Add(msoControlButton)  With oButton    ' Set a tag for the button.    .Tag = "My Button"    ' Set the event to fire when the button is pressed.    .OnAction = "!<" & AddInInst.ProgId & ">"    ' Set the picture property -- if you are using the Mask property, this    ' property must be set before you set the Mask property.    .Picture = oPic    ' Set the Mask property.    .Mask = oMask    ' Show the button.    .Visible = True  End WithEnd SubPrivate Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _   AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)   ' Delete the button.   oButton.Delete   ' Release references.   Set oButton = Nothing   Set oExcel = Nothing End SubPrivate Sub oButton_Click(ByVal Ctrl As Office.CommandBarButton, _  CancelDefault As Boolean)  ' Our button was pressed.  MsgBox "The button was pressed!"End Sub					
  6. ビットマップが格納されているフォルダにプロジェクトを保存し、アドインをビルドします。
  7. Excel を起動します。黄色の円を使用した新しいコントロールが標準の CommandBar に表示されます。黄色の円の周囲の領域が透明になっていることに注目してください。

その他の注意点

前述のように、IPictureDisp インターフェイスはプロセスの境界を越えてマーシャリングできません。プロセス外で Picture プロパティと Mask プロパティの設定を試みると、以下のエラーが発生します。
実行時エラー '-2147418113(8000ffff)':
'Picture' メソッドは失敗しました: '_CommandBarButton' オブジェクト
したがって、アウトプロセス オートメーション クライアントまたは Visual Basic IDE のデバッグ モードで実行されているインプロセス コンポーネントから、これらのプロパティを CommandBarButton に設定することはできません。Visual Basic IDE からこの資料に記載されているサンプル アドインを実行すると、上記のエラーが発生します。デバッグ中にこのエラーを回避するには、Picture プロパティと Mask プロパティを設定している行をコメントにするか、#If...Then...#Else ディレクティブなどの条件コンパイルを使用します。
関連情報
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
238228 [HOWTO] Visual Basic で Office 2000 COM アドインを作成する方法
230689 [SAMPLE] Visual C++ で作成した Office 2000 COM アドインのサンプル Comaddin.exe
150034 オートメーション サーバーから図オブジェクトの IPictureDisp 実装へのポインタをプロセスの境界を越えて渡すことができない
詳細については、次のマイクロソフト Web サイトを参照してください。
addin ipicturedisp mask picture
プロパティ

文書番号:286460 - 最終更新日: 12/06/2015 00:09:09 - リビジョン: 4.4

Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Office Word 2003, Microsoft Word 2002, Microsoft Office FrontPage 2003, Microsoft FrontPage 2002 Standard Edition, Microsoft Office Outlook 2003, Microsoft Outlook 2002 Standard Edition, Microsoft Office PowerPoint 2003, Microsoft PowerPoint 2002 Standard Edition

  • kbnosurvey kbarchive kbautomation kbhowto KB286460
フィードバック