may the VBA be with you

Excel VBAとか業務自動化とか

画像表示マクロ ができるまで その1

はじめに

Excelはもともと表計算ソフトなのですが、色々なことができます。

「表形式で管理しているデータの、行ごとの画像を切り替えるものがほしい」

と知人に言われたときに、なるほどそんな要望があるのか、と思ったものです。

イメージ

シンプルにこんな感じで

f:id:vba-belle-equipe:20160331152017p:plain

選択された行に応じて、画像ファイルを表示させるようにしてみたい、という話でした。

クリアすべきポイント

  • 画像を貼り付ける
  • 何らかのアクションで、行データに応じた画像に切り替える

こんな感じでしょうか。

画像を貼り付ける

vba 画像表示」あたりで検索すると

画像ファイルを挿入する:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

こちらのページが見つかると思います。


「C:¥test¥フリー画像素材」フォルダに表示させたい画像ファイルがあるとして、

Sub test()
  Dim imgPath As String
  Dim myShape As Shape
  
  imgPath = "C:¥test¥フリー画像素材¥rokuro.jpg"
  Set myShape = ActiveSheet.Shapes.AddPicture( _
      Filename:=imgPath, _
      Linktofile:=True, _
      SaveWithDocument:=False, _
      Left:=0, _
      Top:=0, _
      Width:=0, _
      Height:=0)
  
  With myShape
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
  End With

End Sub

「rokuro.jpg」を表示するには、こんな感じでオーケーです。

やってみる

f:id:vba-belle-equipe:20160331155951p:plain

表示されました。

が、位置や大きさは調整の必要がありそう。


それはまた、別の話...
vba-belle-equipe.hatenablog.com

おまけ

フリーの画像素材を探していたら

www.pakutaso.com

こちらで、こちらの写真

f:id:vba-belle-equipe:20160331160232j:plain

「お客様サポートをしながらろくろを回すエンジニア」

を見つけたんですが、どんなシチュエーションやねん、と笑いました。



でも、「ろくろを回す」という表現は実際に回していなくても、ただのポーズに対しても使われるらしいですね。

残念。