office.notes@misora05

本館ブログのうち,Office・Windwsがらみのネタ+@を抜き出したもの.月水金更新予定.

リボンのアイコンをファイルとして保存する(2)

つづき

misora05.hatenablog.com

前回は,リボンのアイコンをファイルとして保存するに際して必要な「前提」について述べました.
今回からは「実践」に入ります.

そのために何を使えばいいのか

これがMicrosoft Office単体でできれば,まぁもちろん言うことなしです――元々,ツールの使用が制限された,私の昼の職場を想定していますしね.

こういうときはとりあえず,VBEのオブジェクト・ブラウザでキーワードとなる文言を検索してみましょうか.
あたまの構造が単純な私には,まぁその方が性に合っていますw

で,今回のキーになりそうなのはimageMSO属性なので,imagemsoで検索,‥

‥なんかいる‥.GetImageMsoメソッドとかいうすごくそれっぽいものが‥.
このメソッドについて検索してみると,

Function GetImageMso(idMso As String, Width As Long, Height As Long) As IPictureDisp

戻り値はIPictureDispなる型らしいので,それをオブジェクト・ブラウザで見てみましょうか.
そもそも,これがどのライブラリ所属なのかもわからないですからね.

stdoleの所属でしたか.
stdoleなんて見たことない」という方もおられると思いますが,「最初から使えるやつ」くらいに思っておけば,まぁ間違いないと思います(適当).

では,とりあえずstdoleで何ができるのかを,オブジェクト・ブラウザで見てみましょうか.

‥またもなんかいる‥.SavePictureメソッドとかいう,すごくそれっぽいものが‥.しかも,宣言を見ると,

Sub SavePicture(Picture As IPictureDisp, filename As String)

なんか見えてみた気がする.つまり

  1. 適当なアイコンを示すimageMSO属性の値をidMSOとして,その幅・高さとしてそれぞれ適当な値をWidthHeightとして,GetImageMsoメソッドを呼び出す
  2. すると,アイコンのイメージを示すIPictureDisp型のオブジェクトが返される.
  3. これを第一引数,保存先のパスを第二引数として,SavePictureメソッドを呼び出す.
  4. すると,そこにアイコンが何らかの画像形式で保存されている!

こうなるんじゃないかしらん?
どんな画像形式かはわかりませんが,まぁ基本ということでICOBMP,せいぜいPNGをまず疑えばいいんじゃないかと思います.

では,次回はこれに基づいて実験してみましょうか.

Microsoft Store (マイクロソフトストア)

つづく

misora05.hatenablog.com