2012-10-02 25 views
5

Excel用のカスタムリボン拡張を開発していますが、コントロールで異なるカスタム画像が必要です。私はファイルシステムにあるいくつかのイメージを使用することができましたが、これらのイメージを.xlsmファイルに埋め込みたいと思います。 コントロールのイメージを更新するVBAコードから参照することはできますか?テスト目的のためにカスタムリボン用のOfficeファイルに画像を埋め込む方法

、これは私のカスタムリボン定義するXMLです:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="ribbonLoaded"> 
    <ribbon> 
    <tabs> 
     <tab idMso="TabHome" > 
     <group id="customGroup1" label="My Group" insertAfterMso="GroupFont"> 
      <button id="customButton1" label="Click Me" size="large" onAction="Macro1" getImage="getButtonImage"/> 
     </group> 
     </tab> 
    </tabs> 
    </ribbon> 
</customUI> 

を、これはcustomButton1コントロールの画像を変更するマクロです:

Dim imgIndex As Long 

Public Sub getButtonImage(ByVal control As IRibbonControl, ByRef Image) 
Select Case control.ID 
    Case "customButton1" 
    Set Image = LoadPicture("img" + Trim(Str(imgIndex)) + ".bmp") 
    imgIndex = (imgIndex + 1) Mod 2 
    End Select 
End Sub 

私が追加しようとしました.xlsm内のbmpファイルを参照してリレーションシップファイル(.rels)を更新するように参照しますが、VBAから参照する方法はわかりませんが、Excelでファイルを開いて保存すると自動的に削除されます...

何か助けていただければ幸いです!

+0

イメージを1回追加する必要がありますか、新しいイメージでファイルを何度も更新する必要がありますか?一度だけ追加する必要がある場合は、[Custom UI Editor](http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2009/08/07/7293.aspx)を使用してcustomUI XMLに追加できます。 )。それらを頻繁に更新する必要がある場合、その方法もうまくいかない可能性があります。 –

+0

イメージを一度追加するだけです。カスタムUIエディタは、埋め込みの最初の問題を解決するのに非常に便利でした(間違った.relsファイルの画像を手動で参照していました...)。しかし、どのようにしてVBAにアクセスして読み込むことができますか?私はLoadPicture関数がそれらと動作しないと思う... –

答えて

1

イメージがcustomUIに埋め込まれている場合、VBAをコントロールに追加する必要はありません。ただ、imageタグで画像に同じIDを使用します。

<button id="button1" label="Test" size="large" image="TestID" onAction="ButtonOnAction" /> 

私のサンプルはcustomUIのXMLに記載されていなければなりませんID「テストID」、とのイメージをadressingされる - 見つけるためにCustom UI EditorcustomUIノードを展開またはイメージIDを変更します(または、新しいイメージを追加するためにエディタを使用します)。

+1

ありがとうOlle。一歩近づく!しかし、すべての埋め込み画像から選択したボタンの画像を動的に変更する必要がある場合は、どうすればよいですか?私の質問の 'getButtonImage'は、私が達成したいものを示しています。ユーザーがボタンをクリックするたびに一連の画像を循環させます(この例では2つですが、最大256にすることができます)。 –

+1

ああ、私はあなたの質問へのコメントで「一回か何度か」尋ねたのですが、私の質問は少し不明です。私はこれをテストする必要がありますが、私は現時点では時間がないのではないかと心配しています。私はそれを解決すれば私はあなたに戻ってきます! –

+0

Ron de Bruinの[this link](http://www.rondebruin.nl/getimage.htm)が見つかりました。可能であれば、file_を開いた後、VBAで_Change Imageという見出しの下の例を参照してください。今日は私があなたのためにできることは最高です! –

関連する問題